OnPlayerStateChange
OnPlayerEnterVehicle
Die beiden bitte mal.
Hast du sonst noch einen Timer wo GetPlayerState abgefragt wird?
OnPlayerStateChange
OnPlayerEnterVehicle
Die beiden bitte mal.
Hast du sonst noch einen Timer wo GetPlayerState abgefragt wird?
Startest du ggf. das falsche Pawno?
Sprich aus einem anderem Ordner?
Wäre auch meine Idee.
Hatte dasselbe Problem, da ich Pawno in der Schnellstart-Leiste angeheftet hatte, aber leider das falsche :DD
new TotenKopf[MAX_PLAYERS];
onplayerdeath:
TotenKopf[playerid] = Createpickup(..
Timer:
DestroyPickup(TotenKopf[playerid]);
Du musst deinen alten Namen "oberinger" in einen String speichern.
new NormalName[MAX_PLAYERS][26];
new HasDeckName[MAX_PLAYERS];
if(strcmp(cmd, "/DeckName",true)==0)
{
if(HasDeckName[playerid] == 0)
{
new nName[24];
new dpName[26];
GetPlayerName(playerid, dpName, 26);
NormalName[playerid] = dpName; // Normaler Name wird gespeichert
if(sscanf(params, "s[24]", nName)) return SendClientMessage(playerid, 0xA5FF00FF, "/Deckname [Name]");
SetPlayerName(playerid, nName); // SpielerName wird umbenannt
new msg[128];
format(msg, 128, "Du hast dich in %s umbenannt!", nName);
SendClientMessage(playerid, 0xA5FF00FF, msg);
HasDeckName[playerid] = 1;
}
else
{
SetPlayerName(playerid, NormalName[playerid]); // Wird wieder zum Normalen Namen zurückgesetzt.
HasDeckName[playerid] = 0;
}
return 1;
}
}
Nicht getestet dürfte aber funktionieren.
müsste auf den ersten Blick stimmen.
War ja auch noch nicht so viel Code^^
Toby -> Aber alleine durch das Objekt wird nun noch kein Platten erzeugt!
Dafür brauchst du die Funktion
new panels, doors, lights, tires;
GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);
Die 15 am Ende von Update.. lässt alle Reifen platzen.
/AudioMsg
Ist eine Funktion von Sa:Mp genau wie /HeadMove usw.
Dreh den mist bitte keinen an
Ich bin nicht so der Crack in MySQL hab das mal von einem angeblich "guten" Tutorial übernommen.
Wasn daran so verkehrt?
pPlaytime[playerid] ist eine Variable, die jede Minute erhöht wird.
Nachdem die Variable erhöht wurde und == 60 ist, bekommt der Spieler den PayDay und die Variable wird wieder auf 0 gesetzt.
Oder willst du dass pPlaytime einfach nur die Spielzeit in Minuten speichert?
---
Zu deinem MySQL Problem:
Hast du bereits irgendwelche Stocks definiert wie mysql_SetInt o.ä.?
stock mysql_GetInt(Table[], Field[], Where[], Is[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
{
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
mysql_query(query);
return true;
}
public OnPlayerDisconnect(playerid, reason)
{
mysql_SetInt("accounts","Spielzeit", SpielerInfo[playerid][pSpielzeit], "Name", SpielerName(playerid));
mysql_SetInt("accounts","pSeitPayday", SpielerInfo[playerid][pSeitPayday], "Name", SpielerName(playerid));
}
public OnPlayerConnect(playerid)
{
SpielerInfo[playerid][pSpielzeit] = mysql_GetInt("accounts","Spielzeit", "Name", SpielerName(playerid));
SpielerInfo[playerid][pSeitPayday] = mysql_GetInt("accounts","pSeitPayday", "Name", SpielerName(playerid));
}
Die Tabellennamen "accounts" musst du natürlich auf deinen Tabellennamen abändern.
Wieso benutzt du pSincePayday?
public pimer(playerid)
{
pPlaytime[playerid]++; // ++ ist wie +1 also wird es alle 60000 milliskunden um 1 erhöht soll die Spielzeit sein
if(pPlaytime[playerid] == 60) // Wenn playtime = 60 Min ist
{
pPlaytime[playerid] = 0; // ZeitseitPayday wird wieder auf 0 gesetzt da er den Payday hatte.
GivePlayerMoneyEx(playerid, 2000); // der ID "Playerid" werden 2000$ gegeben
SendClientMessage(playerid,GRÜN,"PAYDAY");
}
return 1;
}
if ((newkeys & KEY_UP) && (newkeys & KEY_SUBMISSION ))
Wäre dann W + 2/Numpad +
Das hat damit nichts zu tun.
Das ist nur das BackPack der einzelnen Spieler.
Würdest du jetzt Items machen wollen die rumliegen, könntest du das nach ähnlichem Prinzip machen:
#define MAX_ITEMS 5000
enum GI
{
Float:GIx,
Float:GIy,
Float:GIz,
GITyp,
GIObject
}
new GroundItem[MAX_ITEMS][GI];
Befehl zum aufsammeln von Items.
if(strcmp(cmd, "/GetItem",true)==0)
{
for(new i; i < MAX_ITEMS; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3, GroundItem[i][GIx], GroundItem[i][GIx], GroundItem[i][GIx]))
{
BackPack[playerid][GroundItem[i][GITyp]]++;
return 1;
}
}
}
Die Methode ist aber Resourcenfressend, da die Schleife die Positionen von allen Items mit deiner Position abgleicht.
enum pBP
{
Item1, //Map
Item2, //Toolbox
Item3, //Shovel
Item4, //Flashlight
}
new BackPack[MAX_PLAYERS][pBP];
Abfrage:
if(BackPack[playerid][Item1] > 0)
{
//Map
}
else
{
//Keine Map
}
Über eine Variable z.B.
if(HatAnfrage[playerid] > 0)
{
..
HatAnfrage[playerid] = 0;
}
else
{
//Hat keine Anfrage
}
//Beim Befehl
HatAnfrage[pID] = 1;
Wird die Variable "Siehtericon[playerid]" auch gespeichert?
Bzw wo wird der Code ausgeführt? OnPlayerConnect?
Immer das selbe?
Wo gibt es denn so oft ein Dorf-Server, indem man Bäcker o.ä von Beruf sein kann?
Du kannst z.B. Müller hinzufügen die von Transportern das Getreide der Landwirte geliefert bekommen.
SetPVarInt(i,"Hunger",-25);
Setzt er damit nicht den Wert "Hunger" auf -25?
Meinst du garkeine Objekte also beim Serverrestart z.B. auch nicht, oder
nur bei laufendem Server erstellte Objekte (Befehl o.ä)?
Nach dem entfreezen einfach auf 100 setzen wäre leichter, oder irre ich mich da?
Und was wenn er während dem Freeze erschossen wird?
Wieso willst du dir auch so viel HP geben ?
evtl. um kein Leben zu verlieren bei nem Freeze?
Wie SleY schon sagte einfach nen Timer erstellen und solange der Freeze andauert immer wieder die HP beibehalten.