Szerző Téma: OnPlayerShoot callback  (Megtekintve 1052 alkalommal)

dexi

  • Vendég
OnPlayerShoot callback
« Dátum: 2012. március 26. - 17:28:57 »
+1 Show voters
Sziasztok!
Unalmamban alkottam egy \"OnPlayerShoot\" callback-t. Akkor hívódik meg mikor egy játékos lõ.
Használata(példa):
 
#include < a_samp >
#include < OnPlayerShoot >
public OnPlayerShoot( playerid, weaponid, ammo )
{
if( weaponid == 38 )
{
    ResetPlayerWeapons( playerid );
    SendClientMessage( playerid, -1, \"** Sajnálom a minigun itt tiltott fegyver.\");
}
return 1;
}

 
A hibákat kérem jelezzétek, biztos tele lesz buggal.. most próbáltam elõször készíteni ilyesmit.
Letöltés:
Letöltés
Szükséges hozzá \'YSI\':
YSI letöltése
CODE:
 
#include <YSI\\y_hooks>
#define HOLDING(%0) \\
((newkeys & (%0)) == (%0))
#define PRESSED(%0) \\
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
forward OnPlayerShoot(playerid,weaponid,ammo);
forward F_OnPlayerConnect(playerid);
forward F_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
new bool:Lott[MAX_PLAYERS];
new loszer[MAX_PLAYERS], weap[MAX_PLAYERS];
public F_OnPlayerConnect( playerid )
{
SetTimerEx( \"Update\", 5, 1, \"i\", playerid );
SetTimerEx( \"Leker\", 5, 1, \"i\", playerid );
return 1;
}
forward Leker(playerid);
public Leker(playerid)
{
if( GetPlayerAmmo(playerid) != loszer[playerid] )
{
loszer[playerid] = GetPlayerAmmo(playerid);
}
}
hook OnPlayerConnect( playerid )
{
CallLocalFunction( \"F_OnPlayerConnect\", \"i\", playerid );
}
forward Update(playerid);
public Update(playerid)
{
{
if( loszer[playerid] == GetPlayerAmmo(playerid) )
{
   Lott[playerid] = false;
}
if(loszer[playerid] > GetPlayerAmmo(playerid) && weap[playerid] == GetPlayerWeapon(playerid))
{
   loszer[playerid] = GetPlayerAmmo(playerid);
   Lott[playerid] = true;
   if( Lott[playerid] == true)
   {
      CallLocalFunction( \"OnPlayerShoot\", \"iii\", playerid, weap[playerid], loszer[playerid] );
   }      
}
}
}
public F_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if( PRESSED(KEY_FIRE) )
{
loszer[playerid] = GetPlayerAmmo(playerid);
weap[playerid] = GetPlayerWeapon(playerid);
}
return 1;
}
hook OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
CallLocalFunction( \"F_OnPlayerKeyStateChange\", \"iii\", playerid, newkeys, oldkeys );
}
« Utoljára szerkesztve: 2012. március 26. - 18:53:36 írta Fl0rian »

OnPlayerShoot callback
« Válasz #1 Dátum: 2012. március 26. - 19:11:42 »
0 Show voters
Jó lett, bár felesleges hookolásnál a calllocalfunction, ugyanazt az eredményt éred el, mintha hook-ba írtad volna a dolgokat.

dexi

  • Vendég
OnPlayerShoot callback
« Válasz #2 Dátum: 2012. március 26. - 19:13:59 »
0 Show voters
Eredetileg nem így volt, csak teszt miatt írtam át ilyen formába.. Késõbb ha úgy lesz idõm átírom szebbre és kevésbé pazarlóra.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal