Hey, ich suche momentan die schnellste Weise, einem User Geld abzuziehen, der nicht online ist.
Sprich, kann ich einfach einen MySQL Befehl machen, zB:
" UPDATE `script_accounts` SET `Money`='-200' WHERE `Name`='%s' "
Ich glaub nicht oder?
Hey, ich suche momentan die schnellste Weise, einem User Geld abzuziehen, der nicht online ist.
Sprich, kann ich einfach einen MySQL Befehl machen, zB:
" UPDATE `script_accounts` SET `Money`='-200' WHERE `Name`='%s' "
Ich glaub nicht oder?
Adde euch jz, ts wird nur etwas schlecht
Jep, und ich denke mal dann läuft es zum großen Teil wie bei uns in PAWN ab.
Funktionen erstellen und dann noch 3D-Modelle und Texturen und Motion Tracking erstellen
Danke dir. 0.1 hab ich eingefügt, dann gings.
Hey, ich habe eine Tresor Tür für eine Bank erstellt.
Sobald der Räuber 1 Minute lang die Bank ausraubt, soll sich der Tresor öffnen.
Dieser öffnet sich aber nicht langsam in den eingestellten Millisekunden, sondern ruckartig.
Habe bereits recherchiert, da mir dieser Fehler bekannt ist, und das hier probiert:
Klappt allerdings nicht.
if(pRobbingTimer[i] == 180)
{
SendClientMessage(i, COLOR_LIGHTBLUE, "* Noch 3 Minuten bis die Bank erfolgreich ausgeraubt wurde!");
MoveDynamicObject(sBankDoor, 1676.76953, -987.71637, 671.68329+0.01, 3000, 0.00000, 0.00000, 55.00000);
}
Schließen tut sich der Tresor erst recht nicht..
Der Public wird aufgerufen (habs printen lassen), aber da passiert nichts.
if(pRobbingTimer[i] <= 0)
{
new preis = randomex(20000, 80000);
format(string, sizeof(string), "* %s hat erfolgreich die Bank ausgeraubt. ($%d)", GetName(i), preis);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
GiveMoney(i, preis);
SendClientMessage(i, COLOR_LIGHTBLUE, "* Nun sieh zu, dass du hier abhaust!");
pIsRobbingBank[i] = 0;
pRobbingTimer[i] = 0;
SetTimer("CloseBank", 30000, 0);
RoundMessage(i, COLOR_LIGHTBLUE, "** Verschwindet aus dem Tresor, in 30 Sekunden schließt er!", 20.0);
}
Alles anzeigen
forward CloseBank();
public CloseBank()
{
printf("Bank zu!");
MoveDynamicObject(sBankDoor, 1677.24646, -988.41840, 671.68329-0.01, 0.00000, 0.00000, 0.00000);
return 1;
}
Also meine Probleme sind jetzt:
Bank Tresor öffnet sich ruckartig
und
Bank Tresor schließt sich nicht nach den 30 Sekunden obwohl der Timer funktioniert und auch der print kommt.
Danke euch!
Attach3DTextLabelToVehicle komplett weg. Da du die vehicleid schon angegeben hast, ist es automatisch attached.
UpdateDynamic3DTextLabelText(adminveh3Dtext[a], SERVERFARBEHEX, string);
statt dem Attach.
Hey,
ich habe ein Problem bei einer Berechnung.
Ich möchte wenn die neu gekauften Pakete die vom Spieler von 15 überschreiten, das ganze abbricht.
Keine Ahnung wo da der Fehler liegt.
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 595.2783,-1249.6595,17.8187))return SendClientMessage(playerid, COLOR_GREY, "** Nicht in der Nähe vom Waffendealer Punkt. (/gps)");
if(sscanf(params, "i", menge))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /getpaket [1-15]");
if(menge<1||menge>15)return SendClientMessage(playerid, COLOR_GREY, "* Wähle eine Menge zwischen 1 bis 15 aus!");
new mengeX = pPackets[playerid];
if((mengeX+menge) >= 15)return SendClientMessage(playerid, COLOR_GREY, "** Soviele Pakete kannst du nicht mitnehmen.");
new preis = (menge*200);
if(GetMoney(playerid) < preis)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
pPackets[playerid] += menge;
GiveMoney(playerid, -preis);
Danke schonmal.
// Edit
Habs doch noch hinbekommen,
Lösung:
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 595.2783,-1249.6595,17.8187))return SendClientMessage(playerid, COLOR_GREY, "** Nicht in der Nähe vom Waffendealer Punkt. (/gps)");
if(sscanf(params, "i", menge))return SendClientMessage(playerid, COLOR_GREY, "** Benutze /getpaket [1-15]");
if(menge<1||menge>15)return SendClientMessage(playerid, COLOR_GREY, "* Wähle eine Menge zwischen 1 bis 15 aus!");
if((pPackets[playerid]+menge) > 15)return SendClientMessage(playerid, COLOR_GREY, "** Soviele Pakete kannst du nicht mitnehmen.");
new preis = (menge*200);
if(GetMoney(playerid) < preis)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
pPackets[playerid] += menge;
GiveMoney(playerid, -preis);
format(string, sizeof(string), "* Du hast %d Pakete für $%d gekauft. Bringe diese nun schnell nach San Fierro!", menge, preis);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SetPlayerCheckpointEx(playerid, -2109.5037,-0.4467,34.8972, 4.0, CP_GETPAKET_WD, INVALID_CHECKPOINT_TYPE);
Alles anzeigen
(pPackets[playerid]+menge)" ging irgendwie. Keine Ahnung wieso.
Hey,
ich kann komischerweise keine neuen Threads mehr in der SA-MP Scripting Base schreiben.
Kann mir das jemand erklären?
Hey, ich würde gerne in meiner MySQL Datenbank 10 Einträge auf -1 setzen. (Bei allen Spielern)
Habe 10 neue Variablen geadded, diese sollen aber alle auf -1 stehen.
Hat dafür jemand einen SQL-Code? Danke.
Es handelt sich um die Variablen FishID1, FishID2, FishID3, FishID4, FishID5, Fishweight1, Fishweight2, Fishweight3, Fishweight4, Fishweight5
Danke. Danke!
else if(!IsLoggedIn(GetPlayerIdFromName(Spieler[playerid][pVerheiratetName]))) // Not Logged In
{
print("Debug 1");
format(query, sizeof(query), "SELECT * FROM `script_accounts` WHERE `VerheiratetName`='%s'", Spieler[playerid][pVerheiratetName]);
print("Debug 2");
mysql_function_query(myCon, query, true, "DivorcePlayer", "is[25]", playerid, Spieler[playerid][pVerheiratetName]);
return 1;
}
Hab das in dem Befehl mal von else zu else if geändert, und bis zum Debug 1 kommt es garnicht.
happyages.pwn(3128) : warning 225: unreachable code
Ich kann irgendwie keine Threads erstellen, brauche mal eben Hilfe.
CMD:divorce(playerid)
{
new string[128], query[128];
if(Spieler[playerid][pVerheiratet] == 1)
{
if(IsLoggedIn(GetPlayerIdFromName(Spieler[playerid][pVerheiratetName])))
{
new pID = GetPlayerIdFromName(Spieler[playerid][pVerheiratetName]);
Spieler[playerid][pVerheiratet] = 0;
Spieler[pID][pVerheiratet] = 0;
format(Spieler[playerid][pVerheiratetName], MAX_PLAYER_NAME+1, "-");
format(Spieler[pID][pVerheiratetName], MAX_PLAYER_NAME+1, "-");
format(string, sizeof(string), "* Du hast dich von %s geschieden.", GetName(pID));
SendClientMessage(playerid, COLOR_RED, string);
format(string, sizeof(string), "* %s hat sich von dir geschieden.", GetName(playerid));
SendClientMessage(pID, COLOR_RED, string);
return 1;
}
else // Not Logged In
{
format(query, sizeof(query), "SELECT * FROM `script_accounts` WHERE `VerheiratetName`='%s'", Spieler[playerid][pVerheiratetName]);
mysql_function_query(myCon, query, true, "UnbanPlayer", "ii", playerid, Spieler[playerid][pVerheiratetName]);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "** Du bist nicht verheiratet.");
return 1;
}
}
forward DivorcePlayer(playerid, pName[]);
public DivorcePlayer(playerid, pName[])
{
new rows, fields, query[128];
cache_get_data(rows, fields);
if(!rows)
{
SendClientMessage(playerid, COLOR_GREY, "** Du bist nicht verheiratet.");
Spieler[playerid][pVerheiratet] = 0;
return 1;
}
format(query, sizeof(query), "UPDATE `script_accounts` SET `Verheiratet`='0', `VerheiratetName`='-' WHERE `Name`='%s'", pName);
mysql_function_query(myCon, query, false, "", "");
mysql_free_result();
format(query, sizeof(query), "* Du hast dich von %s geschieden.", pName);
Spieler[playerid][pVerheiratet] = 0;
format(Spieler[playerid][pVerheiratetName], MAX_PLAYER_NAME+1, "-");
SavePlayer(playerid);
SendClientMessage(playerid, COLOR_RED, query);
return 1;
}
Alles anzeigen
Wenn der Spieler nun offline ist, kommt nur Unknown Command.
Any help?
// Edit
Funktioniert =]
Auch mögl. für Streamer 3D Text? (Dynamic)
Hey,
gibt es eine Möglichkeit einen 3D Text über dem Spieler nur für eine Fraktion anzeigen zu lassen?
Danke.
pPayGuthaben[pCurrentCall[playerid]] = 0;
zu:
if(IsPlayerConnected(pCurrentCall[playerid])) pPayGuthaben[pCurrentCall[playerid]] = 0;
Danke, funktioniert wunderbar.
Funktioniert immernoch nicht wirklich, komisch.
Habs mal alles debuggen lassen:
"
[20:51:22] killerid: 0
[20:51:22] Debug 1
[20:51:22] Debug 2
[20:51:22] Debug 3
[20:51:22] Debug 5
[20:51:22] Debug 6
[20:51:22] Debug 8"
public OnPlayerDeath(playerid, killerid, reason)
{
printf("killerid: %d", killerid);
new string[128], Float:pos[3];
print("Debug 1");
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
print("Debug 2");
Spieler[playerid][pTot] = 1;
print("Debug 3");
Spieler[playerid][pTotUnix] = 120;
Spieler[playerid][pTotX] = pos[0];
Spieler[playerid][pTotY] = pos[1];
Spieler[playerid][pTotZ] = pos[2];
Spieler[playerid][pTotWorld] = GetPlayerVirtualWorld(playerid);
CreateToten(playerid);
print("Debug 5");
SetMoney(playerid,Spieler[playerid][pMoney]+100);
Spieler[playerid][pSpawned] = false;
Spieler[playerid][pDuty] = false;
print("Debug 6");
if(pCurrentCall[playerid] != -1)
{
if(IsPlayerConnected(pCurrentCall[playerid]) && Spieler[pCurrentCall[playerid]][pLoggedIn])
{
SendClientMessage(pCurrentCall[playerid], COLOR_GREY, "** Die Verbindung wurde unterbrochen ...");
pPhoning[pCurrentCall[playerid]] = 0;
print("Debug 7");
pPayGuthaben[playerid] = 0;
pPayGuthaben[pCurrentCall[playerid]] = 0;
pCurrentCall[pCurrentCall[playerid]] = -1;
pCurrentCall[playerid] = -1;
pPhoning[playerid] = 0;
}
}
print("Debug 8");
pPhoning[playerid] = 0;
pPayGuthaben[playerid] = 0;
pPayGuthaben[pCurrentCall[playerid]] = 0;
pCurrentCall[playerid] = -1;
print("Debug 9");
if(Spieler[playerid][pJailed] == 1)
{
Spieler[playerid][pTot] = 0;
Spieler[playerid][pTotUnix] = 0;
print("Debug 10");
}
print("Debug 11");
Spieler[playerid][pDeaths] ++;
new ort[36];
GetPlayer2DZone(playerid, ort, 36);
print("Debug 12");
format(string, sizeof(string), "* %s ist in %s gestorben. Zum Orten tippe /revivefind %d!", GetName(playerid), ort, playerid);
SendFraktionMessage(3, COLOR_YELLOW, string);
if(killerid != INVALID_PLAYER_ID)
{
print("Debug 13");
Spieler[killerid][pKills] ++;
if(Spieler[killerid][pFraktion] == 1)
{
if(Spieler[playerid][pWanteds] > 0)
{
Spieler[playerid][pTot] = 0;
print("Debug 14");
Spieler[playerid][pTotX] = 0.0;
Spieler[playerid][pTotY] = 0.0;
Spieler[playerid][pTotZ] = 0.0;
Spieler[playerid][pTotUnix] = 0;
Spieler[playerid][pTotWorld] = 0;
print("Debug 15");
GameTextForPlayer(killerid, "~w~Gesuchten ~g~verhaftet", 3000, 6);
if(Spieler[killerid][pFraktion] == 1)format(string, sizeof(string), "HQ: Officer %s hat %s verhaftet, erschossen, over.", GetName(killerid), GetName(playerid));
SendFraktionMessage(1, COLOR_COP_MELDUNG, string);
Spieler[playerid][pJailed] = 1;
Spieler[playerid][pJailTime] = 240*Spieler[playerid][pWanteds];
Spieler[playerid][pWanteds] = 0;
UpdateWantedTD(playerid);
print("Debug 16");
Spieler[playerid][pDeaths] ++;
Spieler[playerid][pJailVisits] ++;
}
}
}
print("Debug 17");
return 1;
}
Alles anzeigen
Und ja, nicht wundern, habe "Debug 4" vergessen.
Ja, und auch wenn jemand einfach so stirbt, kriegen die Medics keine Nachricht im Chat.
Die Kills und Deaths gehen ebenso nicht höher.
->
Es kommt nichts in Fraktion "3" welche Medic ist.
Hey,
ich habe Probleme mit dem OnPlayerDeath Callback.
Ich wollte nämlich an die Sanitäter eine Nachricht senden (und auch wenn ein Polizist einen Verbrecher tötet) sobald jemand stirbt.
Das Problem ist, dieser Teil wird nicht angezeigt.
public OnPlayerDeath(playerid, killerid, reason)
{
new string[128], Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
Spieler[playerid][pTot] = 1;
Spieler[playerid][pTotUnix] = 120;
Spieler[playerid][pTotX] = pos[0];
Spieler[playerid][pTotY] = pos[1];
Spieler[playerid][pTotZ] = pos[2];
Spieler[playerid][pTotWorld] = GetPlayerVirtualWorld(playerid);
CreateToten(playerid);
SetMoney(playerid,Spieler[playerid][pMoney]+100);
Spieler[playerid][pSpawned] = false;
Spieler[playerid][pDuty] = false;
if(pCurrentCall[playerid] != -1){
if(IsPlayerConnected(pCurrentCall[playerid]) && Spieler[pCurrentCall[playerid]][pLoggedIn]){
SendClientMessage(pCurrentCall[playerid], COLOR_GREY, "** Die Verbindung wurde unterbrochen ...");
pPhoning[pCurrentCall[playerid]] = 0;
pPayGuthaben[playerid] = 0;
pPayGuthaben[pCurrentCall[playerid]] = 0;
pCurrentCall[pCurrentCall[playerid]] = -1;
pCurrentCall[playerid] = -1;
pPhoning[playerid] = 0;
}
}
pPhoning[playerid] = 0;
pPayGuthaben[playerid] = 0;
pPayGuthaben[pCurrentCall[playerid]] = 0;
pCurrentCall[playerid] = -1;
if(Spieler[playerid][pJailed] == 1)
{
Spieler[playerid][pTot] = 0;
Spieler[playerid][pTotUnix] = 0;
return 1;
}
if(killerid != INVALID_PLAYER_ID)
{
Spieler[killerid][pKills] ++;
Spieler[playerid][pDeaths] ++;
new ort[36];
GetPlayer2DZone(playerid, ort, 36);
format(string, sizeof(string), "* %s ist in %s gestorben. Zum Orten tippe /revivefind %d!", GetName(playerid), ort, playerid);
SendFraktionMessage(3, COLOR_YELLOW, string);
if(Spieler[killerid][pFraktion] == 1)
{
if(Spieler[playerid][pWanteds] > 0)
{
Spieler[playerid][pTot] = 0;
Spieler[playerid][pTotX] = 0.0;
Spieler[playerid][pTotY] = 0.0;
Spieler[playerid][pTotZ] = 0.0;
Spieler[playerid][pTotUnix] = 0;
Spieler[playerid][pTotWorld] = 0;
GameTextForPlayer(killerid, "~w~Gesuchten ~g~verhaftet", 3000, 6);
if(Spieler[killerid][pFraktion] == 1)format(string, sizeof(string), "HQ: Officer %s hat %s verhaftet, erschossen, over.", GetName(killerid), GetName(playerid));
SendFraktionMessage(1, COLOR_COP_MELDUNG, string);
Spieler[playerid][pJailed] = 1;
Spieler[playerid][pJailTime] = 240*Spieler[playerid][pWanteds];
Spieler[playerid][pWanteds] = 0;
UpdateWantedTD(playerid);
Spieler[playerid][pDeaths] ++;
Spieler[playerid][pJailVisits] ++;
return 1;
}
}
}
return 1;
}
Alles anzeigen
Unten ab "if(killerid != INVALID_PLAYER_ID)" da passiert rein garnichts.
Danke schonmal
Hey, gibt es eine Möglichkeit WBB 3 irgendwo zu kaufen?
WBB4 für 80€ ist mir etwas zu teuer, und ich bräuchte sehr bald ein Forum und verzichte gerne auf Free-Foren.
Danke schonmal.