SSCANF
if(sscanf(params,"u",name))return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist eingeloggt!");
das U bei SSCANF steht für User (Name oder ID)
Damit wird er genau das selbe Problem haben.
SSCANF
if(sscanf(params,"u",name))return SendClientMessage(playerid,COLOR_GREY,"Dieser Spieler ist eingeloggt!");
das U bei SSCANF steht für User (Name oder ID)
Damit wird er genau das selbe Problem haben.
stock IsPlayerNameOnline(PlayerName[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
new pName[MAX_PLAYER_NAME];
GetPlayerName(i,pName,sizeof(pName]));
if(!strcmp(pName, PlayerName, true)) return 1;
}
return 0;
}
Und nun einfach verwenden:
if(IsPlayerNameOnline(playerName[])) //code
Seid 0.3x wurde eine kleine Änderung vorgenommen was die killerid bei OnVehicleDeath angeht.
Könnte mir die jemand erklären?
Klappt nun
Fehler war das ich abgefragt habe ob er sich ein skin ausgesucht hat, falls nein gehts nicht weiter. Aber da ich nie die variable gesetzt habe das er sich bereits ein skin ausgesucht hat konnte es auch nicht klappen.
Trotzdem Danke
Nein kommt kein return vor, nur ganz am ende
Ja, und die funktionieren
Das verwirrt mich so an der sache
Ja habe ich ja bereits funktioniert nicht.
Habe nun ein goto befehl eingefügt um zu testen ob eventuell noch ein anderen anderen stelle was rumspinnt
Gibt es bestimmte Situationen in denen bestimmte Tasten nicht erkannt werden?
Guten Tag
habe ein Problem was mich ein wenig aufregt da ich es schon seid etwa einer Stunde versuche zu fixen. Der Fehler ist, das nicht erkannt wird das er eine bestimmte Taste drückt.
Bisher habe ich die Tasten "c" und "n" ausprobiert, da viele anderen schon belegt oder ungeeignet sind.
Der Spieler ist gefreezed und die camera ist 1-2m vor ihm und auf ihn gerichtet, so wie es in einer skinauswahl üblich ist.
Der Code ist ganz einfach wird aber garnichts erst aufgerufen, was bedeutet das er gar nicht die Taste drückt, bzw es nicht erkannt wird:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
print("Test 1");
if(newkeys & KEY_NO) // if(newkeys % 2) | if(newkeys & KEY_CROUCH) | if(PRESSED(2)) | if(PRESSED(KEY_CROUCH)) > funktionieren ebenso nicht
{
print("Test 2");
if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 || GetPVarInt(playerid,"ChoosedzSkin") >= 0)
{
if(GetPVarInt(playerid,"ChoosedfSkin") >= 0 && Spieler[playerid][Fraktionsskin] <= 0) return 0;
SkinKaufen:
SetPVarInt(playerid,"ChoosedfSkin",-1);
SetPVarInt(playerid,"ChoosedzSkin",-1);
j_SetPlayerInterior(playerid,Spieler[playerid][LastInt]);
j_SetPlayerVirtualWorld(playerid,Spieler[playerid][LastVirt]);
j_SetPlayerPos(playerid,Spieler[playerid][LastX],Spieler[playerid][LastY],Spieler[playerid][LastZ]);
j_TogglePlayerControllable(playerid,1);
SetCameraBehindPlayer(playerid);
DestroyBincoInfo(playerid);
if(Spieler[playerid][Duty] == 1) SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
//else if(Spieler[playerid][Duty] == 2) SetPlayerSkin(playerid,Nebenjobs[Spieler[playerid][Ziviljob]][jSkin]);
else if(IsAGang(Spieler[playerid][Fraktion]))
{
SetPlayerSkin(playerid,Spieler[playerid][Fraktionsskin]);
Spieler[playerid][Duty] = 1;
}
else SetPlayerSkin(playerid,Spieler[playerid][Zivilskin]);
}
}
print("Test 3");
return 1;
}
Ich frage mich echt was für ein dummer Fehler mir da unterlaufen ist. In der Serverlog wird Test 1 und Test 3 angezeigt.
Liebe Grüße
Du musst mit While die Mysql Tabelle auslesen
Eine kleine Frage bezogen auf mein Thema Standard Mysql Funktionen erweitern:
Und zwar wurde mir dort geraten keine Stocks zu benutzen um Werte aus der Tabelle auszulesen, da dies mein Server enorm verlangsamt.
Soll ich nun also den Code im Stock anstelle vom Stock nutzen? Das wäre übelst aufwenig aber wenns wirklich wahr ist würde ich das natürlich machen.
Also Vergleich Vorher:
Fraktionen[i][Drogen] = mysql_GetInt("Fraktionen", "Drogen", "Frakname", Fraktionen[i][Frakname]);
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;
}
Nachher:
new query[128], sqlint;
format(query, 128, "SELECT Drogen FROM Fraktion WHERE Frakname = '%s'", Fraktionen[i][Frakname]);
mysql_query(query);
mysql_store_result();
sqlint = mysql_fetch_int();
mysql_free_result();
Fraktionen[i][Drogen] = sqlint;
Habe ich das so richtig verstanden?
bisschen mehr mit if und else arbeiten:
if(abfrage vom presidenten) code
else
abfrage von all den anderen fraktionen
code
code zum senden der msg
Also soll ich an jeder stelle wo ich die Stocks habe einfach sozusagen den Stock Code nehmen, natürlich dementsprechend angepasst?
Das ist kompletter quatsch!
1. benutzte ich nicht das R7 Plugin also bringen mir auch keine R7 Funktionen was.
2. Funktioniert mein Code.
Ich darf auf keinen fall OR benutzen!! Ich frage 2 verschiedene Spalten ab und nicht die selbe, das wäre ja dann easygoing. Es geht darum mehrere verschiedene Spalten auf verschiedene Werte abzufragen ohne dabei jedesmal für diese sonderfälle wo ich mehrere spalten abfrage eine eigene stock schreiben muss sondern eine dynamische stock schreibe in der ich optional mehrere spalten abfragen kann.
Wenn dies nicht möglich ist hat sich die Frage erledigt, ist es jedoch möglich, was ich glaube, dann wäre es nett wenn mir da ein paar Hilfen gegeben werden könnten.
Nochmal: Es geht hier nicht um Fehlerhafte Codes, sondern darum, es einfacher und dynamischer und eventuell sogar leistungsfähiger zu gestalten
Sondern? Hier mal mein Mysql_GetInt:
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;
}
Und wie ich es dann bei 2 Feldern hatte:
stock mysql_GetIntParams(Table[], Field[], Where[], Is[], aWhere[], aIs[])
{
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);
mysql_real_escape_string(aWhere, aWhere);
mysql_real_escape_string(aIs, aIs);
format(query, 128, "SELECT %s FROM %s WHERE %s = '%s' And %s = '%s'", Field, Table, Where, Is, aWhere, aIs);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
Mal eine kleine Frage bezüglich Mysql Stocks:
Man benutzt ja die schon in vielen Tutorials angefertigten Stocks: mysql_GetInt oder mysql_GetString etc.
Diese nutze ich selber auch. Nun würde ich gerne wissen ob es möglich ist ohne viel überlegung dies ein wenig dynamischer zu machen. Nehmen wir mal an ich brauche ein integer aus einer Datenbank, muss dazu aber 2 Felder abfragen.
Normal:
mit 2 Feldern:
bzw mit mehreren Feldern:
Query: "SELECT [INTEGER] FROM [TABELLE] WHERE [SPALTE 1] = [WERTx] AND [SPALTE 2] = [WERTy] AND ......."
Dazu würde ich gerne eine Funktion schreiben die jedoch unabhängig davon wieviele Felder man abfragen will immer funktioniert.
ähnlich wie beispielweise die SetTimerEx funktion wo du die Werttypen angibst "sdsasdss" und dahinter dann die Werte entsprechend auflistest. Nur ist dies nicht ganz so einfach umsetzbar wie bei diesem Beispiel.
Wäre sehr nett wenn mir da jemand weiter helfen könnte
PS Beispiel wie die Funktion aufgebaut sein kann:
mysql_GetIntEx(Table[], Field[], Where[], Is[], Where2[], Is2[], Where3[], Is3[]) Wobei die Parameter nach Is[] dann optional wären und man somit beliebig viele Felder abfragen kann.
Ist das wetter, ich glaube so ids zwischen 60 und 70
wie sieht denn deine aInfo aus.
Ich denke mal du hast das auf die modelid festgelegt aber gibst da die vehicleid an
Nicht unbedingt eine kleine Scriptingfrage aber trotzdem:
Gibt es nun noch bekannte Bugs in 0.3x die man per Script umgehen muss? Oder wurde alles gefixed?
1. Das
und 2.: du brauchst das garnicht so umständlich machen:
new Float:Variable[Anzahl der Möglichkeiten][3];
dann liest du unter OnGameMode einmal aus:
for(new i = 0; i < Anzahl der Möglichkeiten; i++)
{
Variable[i][0] = mysql_GetFloat("fraktionen","SpawnX","Id", i);
Variable[i][1] = mysql_GetFloat("fraktionen","SpawnY","Id", i);
Variable[i][2] = mysql_GetFloat("fraktionen","SpawnZ","Id", i);
}
und unter OnPlayerSpawn auch ganz einfach:
new fID = SpielerInfo[playerid][pFraktion];
SetPlayerPos(playerid,variable[fID][0],variable[fID][1],variable[fID][2]);
Wenn das dann nicht klappen sollte, hast du ein Fehler beim auslesen der Tabelle, wenn alles in der Tabelle richtig drinne steht.