Sizeof wird nicht als Verwendung gesehen, da es eine Konstante ist. Der Wert wird ja nicht verwendet, sondern dir Größe des Arrays.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Also kriege ich dieses Warning nicht weg oder doch?
-
Wenn du es so lassen willst, dann nutze
#pragma unused szResult -
Dann kommt wiederrum der Fehler:
error 017: undefined symbol "szResult" -
Guten Tag,
Ich möchte mein /Roller System ohne das Dialog:
Der Command:
if(strcmp(cmd, "/roller", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
{
if(UnrentRoller[playerid] == 0)
{
ShowPlayerDialog(playerid,DIALOG_RROLLER,DIALOG_STYLE_MSGBOX, "{FFFFFF}Roller Mieten","{FFFFFF}Möchtest du einen Roller für {00FF00}40${FFFFFF} mieten ?","Mieten","Nein");
}
}
return 1;
}Der Dialog (Der nicht erscheinen soll):
if(dialogid == DIALOG_RROLLER)
{
if(response==0)
{
SendClientMessage(playerid, 0xFEFEFEFF, "Rent Roller abgebrochen");
}
if(response==1)
{
if(RentRoller[playerid] == 0)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new vehiclefid = CreateVehicle(462,1235.7366,-1728.6998,13.1698,359.5901,3,3,-1);
PutPlayerInVehicle(playerid, vehiclefid, 0);
SetVehicleNumberPlate(vehiclefid, name);
GivePlayerMoney(playerid,-100);
SendClientMessage(playerid, 0x4BFF00FF, "Du hast dir einen Roller für 100$ gemietet.");
SendClientMessage(playerid, 0x4BFF00FF, "Dein Roller wurde auf der Straße Gespawnt");
SendClientMessage(playerid, 0x4BFF00FF, "Viel Spaß mit dem Roller um ihn abzugeben");
SendClientMessage(playerid, 0x4BFF00FF, "Gebe /Rollerabgeben ein");
RentRoller[playerid] = vehiclefid;
}
else { SendClientMessage(playerid, RED, "Du hast schon einen Roller gemietet."); }}
}Ich hoffe das mir jemand weiterhelfen kann
MfG
-
@Voxa:
Wie hast du szResult denn deklariert?
Und warum verwendest du es nirgends außer dort? -
Ich kann dir ja die ganze Funktion zeigen:
public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
{
switch(thread)
{
case 0:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows) {
#pragma unused szResult
new
szPlayerName[MAX_PLAYER_NAME],
szTitle[64],
szResult[64];
SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
for(new row; row < rows; row++)
{
cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szResult));
foreach(Player, i) {
if(Spieler[i][pDBID] == Friend_DBID){
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
}
else {
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
}
}
}
format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
}
}
case 1:
{}
}
} -
Ah, so sieht das aus.
Na dann mach das pragma wieder weg, lösche das szResult aus den Deklarationen und schreibe diese Zeile so:
cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szPlayerName)); -
Perfekt, vielen dank!
-
Dr.House:
if(strcmp(cmd, "/roller", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
{
if(UnrentRoller[playerid] == 0)
{
if(RentRoller[playerid] == 0)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new vehiclefid = CreateVehicle(462,1235.7366,-1728.6998,13.1698,359.5901,3,3,-1);
PutPlayerInVehicle(playerid, vehiclefid, 0);
SetVehicleNumberPlate(vehiclefid, name);
GivePlayerMoney(playerid,-100);
SendClientMessage(playerid, 0x4BFF00FF, "Du hast dir einen Roller für 100$ gemietet.");
SendClientMessage(playerid, 0x4BFF00FF, "Dein Roller wurde auf der Straße Gespawnt");
SendClientMessage(playerid, 0x4BFF00FF, "Viel Spaß mit dem Roller um ihn abzugeben");
SendClientMessage(playerid, 0x4BFF00FF, "Gebe /Rollerabgeben ein");
RentRoller[playerid] = vehiclefid;
}
else
{
SendClientMessage(playerid, RED, "Du hast schon einen Roller gemietet.");
}
}
}
return 1;
} -
-
Neues Problem:
Wenn ich zum ersten mal den Befehl '/friends' eingebe, sehe ich ganz normal die User, die ich als Freunde eingetragen habe. Und nur einmal, wie das so sollte.
Gebe ich den Befehl aber zum zweiten mal ein, sehe ich die doppelt aufgelistet.erste Eingabe:
Name: User1 (online)
Name: User2 (offline)zweite Eingabe:
Name: User1 (online)
Name: User2 (offline)
Name: User1 (online)
Name: User2 (offline)Und immer so weiter. Das ist echt ein merkwürdiges Problem..
Aber hier der Code:
Befehl /friends
COMMAND:friends(playerid, params[])
{
new query[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i", Spieler[playerid][pDBID]);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", REQUEST_FRIEND_THREAD, playerid);
return 1;
}Die Funktion 'OnPlayerRequestFriends
Spoiler anzeigen
public OnPlayerRequestFriends(thread, playerid, Friend_ID)
{
switch(thread)
{
case THREAD_NO_RESULT:
{
return 1;
}
case ADD_FRIEND_THREAD:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows)
{
new
query[128],
szResult[64],
szFriendName[64],
FriendDBID;
for(new row; row < rows; row++) {
cache_get_field_content(row, "Name", szResult, MySqlConnection, sizeof(szResult)); szFriendName = szResult;
cache_get_field_content(row, "id", szResult, MySqlConnection, sizeof(szResult)); FriendDBID = strval(szResult);
SetPVarInt(playerid, "New_Friend_DBID", FriendDBID);
SetPVarString(playerid, "New_Friend_Name", szFriendName);
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i AND `FriendDBID` = %i", Spieler[playerid][pDBID], FriendDBID);
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", FINAL_FRIEND_THREAD, playerid);
return 1;
}
}
else {
SendClientMessage(playerid, WEISS, "Der Name existiert nicht.");
}
return 1;
}
case FINAL_FRIEND_THREAD:
{
new rows,
fields;Spoiler anzeigen cache_get_data(rows, fields, MySqlConnection);Spoiler anzeigen if(!rows) {
new query[128],
FriendName[MAX_PLAYER_NAME+1];
mysql_format(MySqlConnection, query, sizeof(query), "INSERT INTO `"#SQL_TAG"_account_friends` (`UserDBID`, `FriendDBID`) VALUES (%i, %i)", Spieler[playerid][pDBID], GetPVarInt(playerid, "New_Friend_DBID"));
mysql_function_query(MySqlConnection, query, false, "OnPlayerRequestFriends", "i", THREAD_NO_RESULT);
GetPVarString(playerid, "New_Friend_Name", FriendName, sizeof FriendName);
format(query, sizeof query, "Du hast %s zum Freund ernannt.", FriendName);
SendClientMessage(playerid, WEISS, query);
DeletePVar(playerid, "New_Friend_Name");
DeletePVar(playerid, "New_Friend_DBID");
return 1;
}
else {
SendClientMessage(playerid, WEISS, "Du hast bereits einen Freund mit diesem Namen.");
}
return 1;
}
case REQUEST_FRIEND_THREAD:
{
new rows,
fields;Spoiler anzeigen cache_get_data(rows, fields, MySqlConnection);Spoiler anzeigen if(rows) {
new szResult[64];Spoiler anzeigen for(new row; row < rows; row++) {
cache_get_field_content(row, "FriendDBID", szResult, MySqlConnection, sizeof(szResult));
new query[128];
mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_main` WHERE `id` = %i", strval(szResult));
mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriendNames", "ii", playerid, strval(szResult));
}
}
return 1;
}
}
return 1;
}Die Funktion 'OnPlayerRequestFriendNames'
Spoiler anzeigen
public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
{
switch(thread)
{
case 0:
{
new rows, fields;
cache_get_data(rows, fields, MySqlConnection);
if(rows) {
new
szPlayerName[MAX_PLAYER_NAME],
szTitle[64];
SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
for(new row; row < rows; row++)
{
cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szPlayerName));
foreach(Player, i) {
if(Spieler[i][pDBID] == Friend_DBID){
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
}
else {
format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
}
}
}
format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
}
}
case 1:
{Spoiler anzeigen }
}
}
-
@Voxa:
Das passiert, da du an deine Friendlist Variable immer die aktuelle FriendList ranhängst.
Deklarierst du diese FriendList lokal, ist der Fehler behoben. (Also innerhalb von 'OnPlayerRequestFriendNames') -
kannst du mir das mal bitte genau zeigen.. Verstehe das gerade nicht.. :l
-
Oder du leerst die Variable vor Verwendung. Dafür einfach vor dem switch in der dritten Zeile von OnPlayerRequestFriendNames das einfügen:
szFriendList=""; -
Guten Tag,
Ich finde die Maps in diesen Script nicht:
-
-
Hat jemand RemoveObject für diesen Krahn in San Fierro BHF und den Wohnwägen?
Sind nicht im Samp Editor.
-
kann ich diese Zeile so machen? if(vModel != 509 || 510 || 481)continue;
Oder muss die so sein: if(vModel != 509 || vModel != 510 || vModel != 481)continue;
-
Hey,
das zweite -
Weder noch. So würde immer continue aufgerufen werden.
So:
if(vModel != 509 && vModel != 510 && vModel != 481)continue;
Wenn du nur diese erlauben willst. -