←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Dodatek
Lina SpiderMan oraz Model SpiderMan

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 31.03.2013

Jest to po prostu wyciągnięcie kodu z codmod'a i przerobienie.
Wiem tylko, że nie każdy potrafi robić tak proste, rzeczy i się prosi na forum o zrobienie.
Wiec teraz zademonstruje jak dodać line do klasy oraz model spiderman'a.

Najpierw jak dodać linę:

Ustawiamy include
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <xs>
#include <diablo_nowe.inc>
Ustawiamy define
#define message_begin_f(%1,%2,%3,%4) engfunc(EngFunc_MessageBegin, %1, %2, %3, %4)
#define write_coord_f(%1) engfunc(EngFunc_WriteCoord, %1)
Ustawiamy new
new bool:bKlasa[ 33 ];
//Cvars
new pThrowSpeed, pSpeed, pWidth, pSound, pColor
new pInterrupt, pHookSky, pOpenDoors, pPlayers
new pUseButtons, pHostage, pWeapons, pInstant, pHookNoise
// Sprite
new sprBeam
// Players hook entity
new Hook[33]
// MaxPlayers
new gMaxPlayers
// some booleans
new bool:gHooked[33]
new bool:canThrowHook[33]
// Player Spawn
new bool:gRestart[33] = {false, ...}
new bool:gUpdate[33] = {false, ...}
Do plugin_init dodajemy
register_event("HLTV", "round_bstart", "a", "1=0", "2=0")

register_event("TextMsg", "Restart", "a", "2=#Game_will_restart_in")
register_clcmd("fullupdate", "Update")
register_event("ResetHUD", "ResetHUD", "b")

pThrowSpeed =  register_cvar("sv_hookthrowspeed", "1000")
pSpeed =  register_cvar("sv_hookspeed", "300")
pWidth =  register_cvar("sv_hookwidth", "32")
pSound =  register_cvar("sv_hooksound", "1")
pColor = register_cvar("sv_hookcolor", "1")
pPlayers =  register_cvar("sv_hookplayers", "0")
pInterrupt =  register_cvar("sv_hookinterrupt", "0")
pHookSky =  register_cvar("sv_hooksky", "0")
pOpenDoors =  register_cvar("sv_hookopendoors", "1")
pUseButtons =  register_cvar("sv_hookusebuttons", "1")
pHostage =  register_cvar("sv_hookhostflollow", "1")
pWeapons = register_cvar("sv_hookpickweapons", "1")
pInstant = register_cvar("sv_hookinstant", "0")
pHookNoise =  register_cvar("sv_hooknoise", "0")

register_forward(FM_Touch, "fwTouch")
gMaxPlayers = get_maxplayers()
Do plugin_precache dodajemy
// Hook Model
engfunc(EngFunc_PrecacheModel, "models/rpgrocket.mdl")

// Hook Beam
sprBeam = engfunc(EngFunc_PrecacheModel, "sprites/zbeam4.spr")

// Hook Sounds
engfunc(EngFunc_PrecacheSound, "weapons/xbow_hit1.wav") // good hit
engfunc(EngFunc_PrecacheSound, "weapons/xbow_hit2.wav") // wrong hit

engfunc(EngFunc_PrecacheSound, "weapons/xbow_hitbod1.wav") // player hit

engfunc(EngFunc_PrecacheSound, "weapons/xbow_fire1.wav") // deploy
Na sam koniec kodu dajemy
Spoiler


Dodawanie modelu spidermana
-inny dla tt
-inny dla ct

Wymagane include
#include <cstrike>
#include <diablo_nowe.inc>
Do plugin_precache dodajemy
precache_model ("models/player/spiderman/spiderman.mdl");
precache_model ("models/player/blackspiderman/blackspiderman.mdl");
Ustawiamy diablo_preThink
if(!is_user_alive(id))
return PLUGIN_HANDLED

if (cs_get_user_team(id) == CS_TEAM_CT)
cs_set_user_model( id, "blackspiderman") //kamuflaz z tt

if (cs_get_user_team(id) == CS_TEAM_T)
cs_set_user_model( id, "spiderman" ) //kamuflaz z ct
return PLUGIN_HANDLED

Modele i pliki do pobrania tutaj

Załączone pliki

Odpowiedz

  • +
  • -
Skull - zdjęcie Skull 02.04.2013

A jak ustawić żeby lina była na bind ??
np: bind "klawisz" "+lina" jak w Onyke ??
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 04.04.2013

Jest taka mozliwosc, ale ja umiem tylko, tak:
-uzywasz bindem, ale automatycznie sie lina nie cofa
-musisz wcisnac jeszcze raz, aby odlaczyc line(np. od sciany)
Odpowiedz

  • +
  • -
Kewin. (ZeZ) - zdjęcie Kewin. (ZeZ) 04.04.2013

Nie testowałem, ale sproboj uzyc takiego czegoś:

caly diablo_preThink jaki zastosowalismy do liny usuwamy i dajemy:

public diablo_lina(id)
{
if(is_user_alive(id))
{
  if(bKlasa[id])
  {
   if(pev(id, pev_button) & diablo_lina(id))
   {
    if(canThrowHook[id] && !gHooked[id])
    {
	
	 throw_hook(id)
    }
    return PLUGIN_HANDLED
   }
   else
   del_hook(id)
  }
 
}
return PLUGIN_HANDLED

}

Teraz do plugin_init dodajemy:

register_clcmd("+lina", "diablo_lina")

Teraz po zbinowaniu "bind klawisz +lina" powinien byc taki sam efekt jak pod (IN_USE)
Ale nie jestem pewny co do: " if(pev(id, pev_button) & diablo_lina(id))"
Odpowiedz

  • +
  • -
LolekTROLEK - zdjęcie LolekTROLEK 27.12.2014

Ej nie rozumiem 2 punktu.

Ja mam w delfine takie coś:

#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0-3"
#define AUTHOR "QTM_Peyote"

#define MAX_WIELKOSC_NAZWY 32
#define MAX_WIELKOSC_OPISU 256
#define MAX_ILOSC_PERKOW 120
#define MAX_ILOSC_KLAS 100

#define STANDARDOWA_SZYBKOSC 250.0

#define ZADANIE_POKAZ_INFORMACJE 672
#define ZADANIE_POKAZ_REKLAME 768
#define ZADANIE_USTAW_SZYBKOSC 832
 

I nie wiem o co chodzi, gdzie mam wpisać .. :)


radim (27.12.2014 16:05):
Załóż nowy temat!
Odpowiedz