SetVehicleToRespawn(vehicleid);
Ich möchte es nicht neu spawnen sondern weg haben
SetVehicleToRespawn(vehicleid);
Ich möchte es nicht neu spawnen sondern weg haben
Ich möchte es nicht neu spawnen sondern weg haben
Dann einfach DestroyVehicle
Ich möchte das wenn mehr als einer auf dem server ist, also min. 2 ein Timer startet, aber wo muss das hin? unter OnGameModeInit?
Kommt drauf an.
Was soll den der Timer machen, wenn er läuft? Und soll er sich wiederholen, oder nur einmal aufgerufen werden?
er soll nur einmal starten, also jedes mal wenn die schwelle von 1 auf 2 Spieler wechselt
Ok, dann so:
Unter den Includes (global):
new onlinePlayers;
new onlineTimer = -1;
OnPlayerDisconnect:
onlinePlayers--;
if(onlinePlayers == 1) if(onlineTimer != -1) KillTimer(onlineTimer), onlineTimer = -1;
OnPlayerConnect:
onlinePlayers++;
if(onlinePlayers == 2) onlineTimer = SetTimer("ZweiSpielerJetzt", 120000, false); //120 sek = 2 min = 120.000 Millisekunden
Und das Callback:
forward ZweiSpielerJetzt();
public ZweiSpielerJetzt();
{
onlineTimer = -1;
//Mach was hier...
return 1;
}
SetPlayerHealth(playerid, FLOAT_INFINITY);
zu:
SetPlayerHealth(playerid, 999999.0);
Der Spieler stirbt immmer noch beim OffDuty gehen...
Die Leben musst du natürlich noch richtig speichern, ich dachte das wäre klar.
Das kannst du mit http://wiki.sa-mp.com/wiki/SetPVarFloat machen.
Laden dann mit GetPVarFloat.
Wieso wird mir das SendClientMessageToAll nicht gesendet? Beim Printen wird alles richtig angezeigt.
ocmd:setleader(playerid,params[])
{
new pID,fID,string[386];
if(!IsPlayerAnAdmin(playerid,0)) return SendClientMessage(playerid,0xFF3C3CFF,"AdmCmd: Sie besitzen nicht die nötigen Rechte um diesen Befehl zu nutzen!");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xEE8613FF,"Der angegebene Spieler ist nicht eingeloggt!");
if(sscanf(params,"ud",pID,fID)) return SendClientMessage(playerid,0xFFFFFF,"Info: /setleader [Spieler ID] [Fraktion´s ID]");
if(Spieler[pID][pFraktion] != 0)return SendClientMessage(playerid,0xEE8613FF,"Der angegebene Spieler ist bereits in einer Fraktion.");
if(fID<1||fID>3)return SendClientMessage(playerid,0xEE8613FF,"Wähle bitte eine Fraktion zwischen 1 und 3 aus.");
Spieler[pID][pFraktion] = fID;
Spieler[pID][pFrakLeader] = 1;
Spieler[pID][pFrakRang] = 6;
Spieler[pID][pFrakSkin] = 0;
Spieler[pID][pFrakDuty] = 0;
format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum Leader der Fraktion {FF7979}%s {E5E5E5}Ernannt!",Spielername(pID),Spielername(playerid),FraktionsName(fID));
SendClientMessageToAll(0xE5E5E5FF,string);
print(string);
SavePlayerData(pID);
return 1;
}
Das liegt daran, dass SendClientMessageToAll und SendClientMessage nur maximal 144 Zeichen ausgeben können (plus EOS).
Schreibe deine Deklarationen so, dann siehst du ab wann es abgeschnitten wird, mehr kann nicht angezeigt werden.
new pID,fID,string[145];
Hallo zusammen,
wenn OnPlayerSpawn aufgerufen wird, soll der Spieler seine Waffen erhalten, allerdings bekommt er keine:
stock LoadWeapons(playerid)
{
new query[256];
format(query,sizeof(query),"SELECT * FROM Waffen WHERE Name='%s'",PlayerName[playerid]);
mysql_query(query);
new data2[64],wstring[10],data[64];
new waffe, wammo;
mysql_store_result();
if(mysql_num_rows()==0)
{
mysql_free_result();
format(query,sizeof(query),"INSERT INTO Waffen (Name) VALUES ('%s')",PlayerName[playerid]);
mysql_query(query);
mysql_free_result();
return 1;
}
mysql_free_result();
for(new i=1; i<=11; i++)
{
format(str,144,"SELECT Waffe%i, Ammo%i FROM Waffen WHERE Name='%s'",i,i,PlayerName[playerid]);
mysql_query(str);
mysql_store_result();
format(wstring,sizeof(wstring),"Waffe%i",i);
mysql_fetch_field_row(data,wstring);
format(wstring,sizeof(wstring),"Ammo%i",i);
mysql_fetch_field_row(data2,wstring);
waffe=strval(data);
wammo=strval(data2);
GivePlayerWeapon(playerid,waffe,wammo);
mysql_free_result();
format(str,144,"UPDATE Waffen SET Ammo%i='0' WHERE Name='%s'",i,PlayerName[playerid]);
mysql_query(str);
mysql_free_result();
}
format(str,144,"SELECT Armor FROM Waffen WHERE Name='%s'",PlayerName[playerid]);
mysql_query(str);
mysql_store_result();
mysql_fetch_field_row(data,"Armor");
mysql_free_result();
wammo=strval(data);
SetPlayerArmour(playerid,wammo);
SetPVarInt(playerid,"waffengeladen",1);
return 1;
}
Anbei der Auszug aus der mysqllog:
OnQueryError() - Called
Füge das mal ein:
public OnQueryError(errorid, error[], resultid, extraid, callback[], query[], connectionHandle)
{
switch(errorid)
{
case CR_COMMAND_OUT_OF_SYNC:
{
printf("Commands out of sync for thread ID: %d",resultid);
}
case ER_SYNTAX_ERROR:
{
printf("Something is wrong in your syntax, query: %s",query);
}
}
return 1;
}
und zeig dann mal den server_log
Es wird nichts geprintet.
Okay, dann machs mal so:
public OnQueryError(errorid, error[], resultid, extraid, callback[], query[], connectionHandle)
{
return printf("Error: %s - Query: %s",error,query);
}
Die Query Errors lagen wohl nicht an den Waffen, sondern an allgemeinen Userdaten. Habe diese nun richtig gestellt, aber bei den Waffen nichts verändert.
Nun wird auch nichts mehr geprintet, die Waffen gibt es aber trotzdem nicht.
Das ist keine kleine Scripting Frage. Dieser Thread ist nicht für MySQL Debugging gedacht. Merke dir das bitte für das nächste Mal und erstelle dann einen Thread. Danke!
Teste es mal so:
Du hast "SQLID" auf PRIMARY gesetzt, in deiner Datenbank. Mach das weg, und mach stattdessen eine Spalte "id" dazu, der du den PRIMARY KEY gibst.
Bei UpdateHaus destroyt das Script nicht den 3DText...
stock UpdateHaus(id)
{
new str[128];
if(hInfo[id][h_pickup])
{
DestroyPickup(hInfo[id][h_pickup]);
}
if(hInfo[id][h_text])
{
Delete3DTextLabel(hInfo[id][h_text]);
}
if(!strlen(hInfo[id][hBesitzer]))
{
hInfo[id][h_pickup] = CreatePickup(1273, 1, hInfo[id][hX], hInfo[id][hY], hInfo[id][hZ], -1);
format(str,sizeof(str), "HausID: %i\nZu Verkaufen\nPreis: %i$\n/hauskaufen", hInfo[id][hID], hInfo[id][Preis]);
hInfo[id][h_text] = Text3D:Create3DTextLabel(str, WEISS, hInfo[id][hX], hInfo[id][hY], hInfo[id][hZ], 10, 0, 1);
} else {
hInfo[id][h_pickup] = CreatePickup(1272,1,hInfo[id][hX],hInfo[id][hY],hInfo[id][hZ], -1);
format(str,sizeof(str), "HausID: %i\nBesitzer: %s\n'F' zum hinein gehen.", hInfo[id][hID], hInfo[id][hBesitzer]);
hInfo[id][h_text] = Text3D:Create3DTextLabel(str, GELB, hInfo[id][hX], hInfo[id][hY], hInfo[id][hZ], 10, 0, 1);
}
return 1;
}