GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: anorennia - 2012. augusztus 06. - 02:34:04

Cím: 3DText
Írta: anorennia - 2012. augusztus 06. - 02:34:04
Sziasztok, nekem lenne egy olyan kérdésem, hogy ha berakom OnPlayerPublic alá azt, hogy Create3dtetxtlabel és abba bele, hogy IsPlayerInRangeOfPoint és amikor belemegyek megjelenik egy dialog, és akármire kattintok, visszadob a fõdialogba, ha rámegyek a kilépésre, akkor is ugyan úgy visszadob.. :/ ebben van a hiba?:
 
public OnPlayerUpdate(playerid)
{
Create3DTextLabel(\"1-es kassza!\", 0x008080FF, 2317.5152, -7.4353, 26.7422, 40, 0, 0);
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2317.5152, -7.4353, 26.7422))
{
   ShowPlayerDialog(playerid,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
}
}
Create3DTextLabel(\"2-es kassza!\", 0x008080FF, 2317.5152, -15.4353, 26.7422, 40, 0, 0);
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, 2317.5152, -15.4353, 26.7422))
{
   ShowPlayerDialog(playerid,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
}
}
return 1;
}

 
[mod]Téma neve, és CODE tegek kitéve.[/mod]
Cím: 3DText
Írta: Flash - 2012. augusztus 06. - 03:31:52
Create3DTextLabel(\"2-es kassza!\", 0x008080FF, 2317.5152, -15.4353, 26.7422, 40, 0, 0);

 
Ezt az OnGameModeInit alá szokás írni.
és az nem OnPlayerPublic hanem OnPlayerUpdate
És akkor helyesen így kell:
OnGameModeInit alá:
Create3DTextLabel(\"1-es kassza!\", 0x008080FF, 2317.5152, -7.4353, 26.7422, 40, 0, 0);
Create3DTextLabel(\"2-es kassza!\", 0x008080FF, 2317.5152, -15.4353, 26.7422, 40, 0, 0);
És Akkor:
 
public OnPlayerUpdate(playerid)
{
   if(IsPlayerInRangeOfPoint(playerid, 2.0, 2317.5152, -7.4353, 26.7422))
   {
         ShowPlayerDialog(playerid,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
      }
      if(IsPlayerInRangeOfPoint(playerid, 2.0, 2317.5152, -15.4353, 26.7422))
      {
         ShowPlayerDialog(playerid,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
      }
       return 1;
}

 
És akkor másold be ami az OnDialogResponse alatt van.
Cím: 3DText
Írta: anorennia - 2012. augusztus 06. - 04:29:38
Az egész response-t másoljam be?:O
Cím: 3DText
Írta: TengeriMalac - 2012. augusztus 06. - 09:15:06
Idézetet írta: anorennia date=1344220178\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"25598\" data-ipsquote-contentclass=\"forums_Topic
Az egész response-t másoljam be?:O
 
Felesleges...


OnPlayerUpdate alatt nagyon terhelni fogja a szervert..
Szerintem használj Streamer Plugint, azon belül a checkpoint részt..
Csinálj egy változót, aminek az értéke 1, hogyha a checkpointban állsz, és 0, ha nem.. Így ha belemész, nem fogja spammelni a dialogot, és tudod normálisan használni.
Cím: 3DText
Írta: anorennia - 2012. augusztus 06. - 09:26:59
Tengerimalac, tudnál nekem segíteni ebben?:O
Cím: 3DText
Írta: TengeriMalac - 2012. augusztus 06. - 09:44:20
Hát.. Vannak róla leírások.. De ha elakadsz, akkor igen :)


#include <a_samp>
new bool:PlayerInPoint[MAX_PLAYERS] = false;
public OnFilterScriptInit() {
    Create3DTextLabel(\"1-es kassza!\", 0x008080FF, 2317.5152, -7.4353, 26.7422, 40, 0, 0);
    Create3DTextLabel(\"2-es kassza!\", 0x008080FF, 2317.5152, -15.4353, 26.7422, 40, 0, 0);
SetTimer(\"CheckPosition\", 1000, true);
return 1;
}
forward CheckPosition();
public CheckPosition() {
for(new i = 0; i < MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    if(IsPlayerInRangeOfPoint(i, 2.0, 2317.5152, -7.4353, 26.7422)) {
        if(PlayerInPoint) continue;
        PlayerInPoint = true;
   ShowPlayerDialog(i,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
} else if(IsPlayerInRangeOfPoint(i, 2.0, 2317.5152, -15.4353, 26.7422)) {
    if(PlayerInPoint) continue;
    PlayerInPoint = true;
    ShowPlayerDialog(i,1125,DIALOG_STYLE_LIST,\"Bank\",\"Pénz behelyezése\\nPénz felvétele\\nEgyenleg\\nÁtutalás\",\"Kiválaszt\",\"Mégsem\");
} else PlayerInPoint = false;
}
return 1;
}

 
Remélem mûködik. :D
Cím: 3DText
Írta: anorennia - 2012. augusztus 06. - 10:01:10
Köszönöm a segítséget, mint a plusz :)