Szerző Téma: Ezt hova másoljam hogy mûködjön?  (Megtekintve 1167 alkalommal)

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Dátum: 2011. november 13. - 18:25:05 »
0 Show voters
[pawn]forward injuredtimer(playerid);
//------------------------------//-----------------------------//
new kocsielet;
kocsielet = GetVehicleHealth(playerid)
if(kocsielet <550)
{SendClientMessage(playerid, RED, Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid)
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);}
//-------------------------------//----------------------------//
public injuredtimer(playerid)
{
ClearAnimations(playerid);
SendClientMessage(playerid, GREEN, \"Felépültél, legközelebb óvatosabban vezess.\");
return 1;
}[/pawn]
Megírtam csak úgy szimplán itt a neten, a lényege hogy ha a jármû \"Élete\" 550 alá megy akkor kidobja a sofõrt a kocsiból és animba teszi 30mp-re. Mikor lefut a timer akkor pedig kiszedi az animból.. Azt tudom hogy a mod felsõ részébe kell illeszteni a [pawn]forward injuredtimer(playerid); [/pawn]-t. Azt is tudom hogy valahova a modba kell helyezni a [pawn]public injuredtimer(playerid)
{
ClearAnimations(playerid);
SendClientMessage(playerid, GREEN, \"Felépültél, legközelebb óvatosabban vezess.\");
return 1;
} [/pawn]
kódot.
De a következõ kódot hova rakjam hogy mûködjön is?
[pawn]new kocsielet;
kocsielet = GetVehicleHealth(playerid)
if(kocsielet <550)
{SendClientMessage(playerid, RED, Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid)
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);}[/pawn]

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #1 Dátum: 2011. november 13. - 18:33:52 »
+1 Show voters
Pl.
public OnPlayerUpdate(playerid)

Nem elérhető The

  • 4384
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #2 Dátum: 2011. november 13. - 18:42:52 »
0 Show voters


Ez nem lesz jó?
 
[pawn]#include <a_samp>
#define RED 0xff0000AA
new Float:phealth[MAX_PLAYERS];
new Float:vhealth[MAX_PLAYERS];
new Float:vhp;
forward OnPlayerGetHealth(playerid, health);
forward OnPlayerLoseHealth(playerid, health);
forward OnVehicleLoseHealth(playerid, vehid, health);
forward Jozanul(playerid);
forward Felall(playerid);
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\"       Hurting Script by GroX           \");
print(\"--------------------------------------\\n\");
return 1;
}
public OnPlayerSpawn(playerid)
{
phealth[playerid] = 100;
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
GetVehicleHealth(vehicleid, vhp);
vhealth[playerid] = vhp;
return 1;
}
public OnVehicleLoseHealth(playerid, vehid, health)
{
new Float:php;
new Float:vX, Float:vY, Float:vZ;
if(health >= 100)
{
   GetVehiclePos(vehid,vX,vY,vZ);
   SetPlayerPos(playerid,vX+1.5,vY+1.5,vZ);
   TogglePlayerControllable(playerid,0);
   ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\",4,1,1,0,0,-1);
   GetPlayerHealth(playerid, php);
   SetPlayerHealth(playerid, php-30);
   SetPlayerDrunkLevel(playerid,10000);
   SendClientMessage(playerid,RED,\"Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
   SetTimerEx(\"Felall\",15000,0,\"i\",playerid);
}
return 1;
}
public OnPlayerLoseHealth(playerid, health)
{
new Float:php;
GetPlayerHealth(playerid,php);
if(health >= 30 || php > 10)
{
    SetPlayerDrunkLevel(playerid,25000);
    SetTimerEx(\"Jozanul\",5000,0,\"i\",playerid);
}
return 1;
}
public OnPlayerGetHealth(playerid, health)
{
new Float:php;
GetPlayerHealth(playerid,php);
if(php > 10)
{
   SetPlayerDrunkLevel(playerid,0);
}
return 1;
}
public Felall(playerid)
{
ClearAnimations(playerid);
TogglePlayerControllable(playerid,1);
SetPlayerDrunkLevel(playerid,0);
SetCameraBehindPlayer(playerid);
return 1;
}
public Jozanul(playerid)
{
SetPlayerDrunkLevel(playerid,0);
return 1;
}
public OnPlayerUpdate(playerid)
{
new Float:hp;
GetPlayerHealth(playerid, hp);
if(hp == 0)
{
   phealth[playerid] = 0;
}
if(hp < phealth[playerid])
{
   OnPlayerLoseHealth(playerid,floatround(phealth[playerid]-hp));
   phealth[playerid] = hp;
}
if(hp > phealth[playerid])
{
   OnPlayerGetHealth(playerid, floatround(hp-phealth[playerid]));
   phealth[playerid] = hp;
}
if(hp <= 10)
{
    SetPlayerDrunkLevel(playerid,50000);
}
if(IsPlayerInAnyVehicle(playerid))
{
    GetVehicleHealth(GetPlayerVehicleID(playerid), vhp);
    new vehid = GetPlayerVehicleID(playerid);
   if(vhp < vhealth[playerid])
   {
      OnVehicleLoseHealth(playerid,vehid,floatround(vhealth[playerid]-vhp));
      vhealth[playerid] = vhp;
   }
}
return 1;
}
[/pawn]
Átírod ami nem tetszik és már jó is..  :)
« Utoljára szerkesztve: 2011. november 13. - 18:48:09 írta Dávidka »

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #3 Dátum: 2011. november 13. - 18:48:16 »
0 Show voters
Köszi Dávidka de sajátot seretnék mert így sose tanulom meg a dolgokat, nehezebb utat választom. : D.
Na sikerült beindítanom nincs benne hiva, ami volt kijavítgattam. DE! Amikor felmegyek as zerverre befloodlja hogy összetörtem a kocsit.. egyofjtában.. lepörög a timer és kezdi elõrõl.
A kód:
[pawn]public OnPlayerUpdate(playerid)
//------------------------------//-----------------------------//
{
new Float:kocsielet;
kocsielet = GetVehicleHealth(playerid, kocsielet);
if(kocsielet <550)
{SendClientMessage(playerid, RED, \"Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid);
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);}}
//-------------------------------//----------------------------//[/pawn]

Nem elérhető The

  • 4384
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #4 Dátum: 2011. november 13. - 18:50:24 »
+1 Show voters
[pawn]public OnPlayerUpdate(playerid)
//------------------------------//-----------------------------//
{
new Float:kocsielet;
kocsielet = GetVehicleHealth(playerid, kocsielet);
if(kocsielet <550)
{SendClientMessage(playerid, RED, \"Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid);
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);
}
return 1;
}
//-------------------------------//----------------------------//[/pawn]
Minden igaz így jólesz.

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #5 Dátum: 2011. november 13. - 18:52:04 »
0 Show voters
Belogolok és rögtön anim : s

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #6 Dátum: 2011. november 13. - 18:59:54 »
+1 Show voters
Lehet, hogy 100HP-s a kocsi. Vedd le az 555-t 55-re.

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #7 Dátum: 2011. november 13. - 19:04:23 »
0 Show voters
Próbáltam://. De nem.

Ezt hova másoljam hogy mûködjön?
« Válasz #8 Dátum: 2011. november 13. - 19:24:00 »
+1 Show voters
OnPlayerUpdate alatt van, persze hogy ezt csinálja...
Elõször is kell egy változó, pl:
[pawn]new bool:ertesitve[MAX_PLAYERS];[/pawn]
Akkor.. ha csatlakozik a játékos akk még nem verte be a fejét meg ilyenek, így üzit se kapott, tehát onplayerconnect-hez:
[pawn]ertesitve[playerid] = false;[/pawn]
OnPlayerConnecthez létrehozol egy timert:
[pawn]SetTimerEx(\"serules\",100,1,\"i\",playerid);[/pawn]
Ezt csinálja 1 tized másodpercenként:
[pawn]forward serules(playerid);
public serules(playerid)
{
new Float:kocsielet;
kocsielet = GetVehicleHealth(playerid, kocsielet);
if(kocsielet <550 && ertesitve[playerid] == false)
{
SendClientMessage(playerid, RED, \"Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid);
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
ertesitve[playerid] = true;
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);
}
return 1;
}[/pawn]
Tehát ha a kocsi hp 550 alatt van és a játékos még nincs értesítve róla h beverte a fejét meg összetörte a kocsiját akkor értesíti, eltávolítja a kocsiból, és elindítja az injuredtimer-t. Így csak 1x küldi el az üzenetet. Ha meg a kocsija rendben van vagy a mentõsök összeszedték a játékos maradványait v vmi hasonló akkor [pawn]ertesitve[playerid] = false;[/pawn]

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #9 Dátum: 2011. november 13. - 19:33:16 »
0 Show voters
Elfogadja warning/error nélkül, király. Csak az a gond hogy mikor belogolok kkiírja hogy összetörtem ak ocsit(még a skinválasztónál), utána mikor belépek tudok mozogni meg minden beszállok akocsiba leviszem az HP-ját 550 alá, kidob a kocsiból és azt írja hogy felépültem stbstb.... :OO
« Utoljára szerkesztve: 2011. november 13. - 19:46:01 írta dexi »

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #10 Dátum: 2011. november 13. - 19:58:48 »
+1 Show voters
Hát persze, mivel nem ülsz kocsiban, ezért a kocsi HP-t 0-nak veszi. Kérd le elõször, hogy kocsiban van-e. if(IsPlayerInAnyVehicle(playerid)) azthiszem.

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #11 Dátum: 2011. november 13. - 20:02:13 »
0 Show voters
ígymostmár azt csinálja hogy ha beszállok a kocsiba akkor kidob és anim... mind1 mekkora  kocsi HP-ja.

Nem elérhető Benceee

  • 4785
    • Profil megtekintése
Ezt hova másoljam hogy mûködjön?
« Válasz #12 Dátum: 2011. november 13. - 20:21:03 »
+1 Show voters
kocsielet = GetVehicleHealth(playerid, kocsielet);

 
helyett
 
kocsielet = GetVehicleHealth(GetPlayerVehicleID(playerid), kocsielet);

dexi

  • Vendég
Ezt hova másoljam hogy mûködjön?
« Válasz #13 Dátum: 2011. november 13. - 20:29:13 »
0 Show voters
Ugyanaz az eset.
[pawn]public serules(playerid)
{
new Float:kocsielet;
new kocsim;
kocsim = GetPlayerVehicleID(playerid);
kocsielet = GetVehicleHealth(kocsim, kocsielet);
if(IsPlayerInAnyVehicle(playerid))
if(kocsielet <550 && ertesitve[playerid] == false)
{
SendClientMessage(playerid, RED, \"Összetörted a kocsit és beverted a fejed, várj egy kicsit míg jobban leszel.\");
RemovePlayerFromVehicle(playerid);
ApplyAnimation(playerid,\"SWEET\",\"Sweet_injuredloop\",3.0,0,1,1,1,0);
ertesitve[playerid] = true;
SetTimerEx(\"injuredtimer\",30000, 0, \"i\", playerid);
}
return 1;
}[/pawn]

Ezt hova másoljam hogy mûködjön?
« Válasz #14 Dátum: 2011. november 13. - 20:39:39 »
+1 Show voters
Idézetet írta: Dream1990 date=1321212063\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13357\" data-ipsquote-contentclass=\"forums_Topic

kocsielet = GetVehicleHealth(playerid, kocsielet);

 
helyett
 
kocsielet = GetVehicleHealth(GetPlayerVehicleID(playerid), kocsielet);

 

Ez sem jó.
new Float:kocsielet;

GetVehicleHealth(GetPlayerVehicleID(playerid), Float:kocsielet);


 

SimplePortal 2.3.7 © 2008-2024, SimplePortal