Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Témák - Gamestar

Oldalak: 1 [2] 3 4 ... 6
16
Kérdések, Segítség / Android Market probléma
« Dátum: 2012. Április 14. - 23:15:09 »
Üdv
Amikor az Android Marketrõl akarok letölteni, akkor az a probléma merül fel, hogy \"Starting download\", és vége. (Galaxy S 1 telefon)
Valakinek esetleg van ötlete a probléma megoldására? (Az alkalmazások adatainak törlését megpróbáltam, és a googlemail/gmail probléma sem áll fenn)

17
SA-MP: Szerverfejlesztés / PAWN Autoindent
« Dátum: 2012. Április 14. - 02:06:15 »
Üdv
Ez a felület az elrontott kódodon hajtja végre EBBEN a leírásban leírtakat. Nem garantálom, hogy minden kódon mûködik, de a hibabejelentés itt lehetséges. A kódokat nem tároljuk el!
PAWN Autoindent megnyitása
Példa:
 
public OnFilterScriptInit()
{
   new
a,
b,
c;
   new d;
   new e
f;
new Float:g[][]=
{
               {0.0,0.0,0.0},
{0.0,0.0,0.0},
      {0.0,0.0,0.0},
            };
   print(\"a\");
         print(\"a\");
   print(\"a\");
print(\"a\");
   if(print(\"a\"))
{
print(\"b\");
      if(print(\"b\"))
{
   print(\"c\");
if(print(\"c\"))
{
            print(\"d\");
   }
}
}
  return 1;
}

 
vagy
 
public OnFilterScriptInit()
{
new
a,
b,
c;
new d;
new e
f;
new Float:g[][]=
{
{0.0,0.0,0.0},
{0.0,0.0,0.0},
{0.0,0.0,0.0},
};
print(\"a\");
print(\"a\");
print(\"a\");
print(\"a\");
if(print(\"a\"))
{
print(\"b\");
if(print(\"b\"))
{
print(\"c\");
if(print(\"c\"))
{
print(\"d\");
}
}
}
return 1;
}

 
->
 
public OnFilterScriptInit()
{
    new
        a,
        b,
        c;
    new d;
    new e
        f;
    new Float:g[][]=
    {
        {0.0,0.0,0.0},
        {0.0,0.0,0.0},
        {0.0,0.0,0.0},
    };
    print(\"a\");
    print(\"a\");
    print(\"a\");
    print(\"a\");
    if(print(\"a\"))
    {
        print(\"b\");
        if(print(\"b\"))
        {
            print(\"c\");
            if(print(\"c\"))
            {
                print(\"d\");
            }
        }
    }
    return 1;
}

 

Idézetet írta: Tücsi date=1310895834\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20133\" data-ipsquote-contentclass=\"forums_Topic

INDENTIFIKÁCIÓ
 
Üdv! Ezt a mai leírásomat abból a szándékból kezdtem el írni, hogy rávezessem a kezdõket az indentifikáció használatának szükségességére.
Elõször tisztázzuk le ennek fogalmát: egy teljesen megegyezõ futtatandó fájlhoz (.amx) különbözõ stílusú, de azonos mûveleteket tartalmazó forráskód (.pwn) tartozhat, mivel a Pawn fordítója a fordítás során a formázásokat figyelmen kívül hagyja. Formázásnak tekintjük a kommenteket, az üres sorokat ill. a behúzást vagy idegen szóval indentifikációt.
A behúzás azt jelenti, hogy egy bizonyos blokkba (függvény, elágazás, ciklus, stb.) írt kódot mindig egy meghatározott mennyiséggel beljebb húzzuk a kijjebb álló kódnál, ezzel megkapva ez \"csontvázas\" kinézetet, így ránézésre láthatjuk, hogy \"mi min belül van\".
MIÉRT?
Talán a kezdõknek nem tûnhet ez olyan fontosnak, de képzeljük el, hogy egy több ezer parancsot tartalmazó programról van szó, és abban szeretnénk mondjuk egy függvényen belül a 8. egymásba ágazott if utasításban valamit változtatni. Kín és szenvedés lenne egy azonos behúzási szinten lévõ kódban ezt megtalálni, nem beszélve arról, ha magukban az elágazásokban is eleve hosszú kód van, míg indentifikálva egybõl láthatjuk a szinteket.
A következõ részben egy rövid kódot fogok nektek beilleszteni egy szkriptbõl indentifikáció nélkül, majd vele. Próbáljátok megfejteni mit csinál mindkét esetben. Hogyan volt könnyebb?
 
public OnPlayerUpdate(playerid){
if(!newround && living[playerid]){
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(Z < 150.0){
printf(\"DEBUG: ID %d knocked out, put in Spec\", playerid);
new outstr[128];
GetPlayerName(playerid, outstr, 128);
format(outstr, 128, \"{FFCC33}%s {CC33FF}kiesett...\", outstr);
SendClientMessageToAll(0xCC33FFFF, outstr);
living[playerid] = false;
if(IsPlayerInAnyVehicle(playerid)){
new id = GetPlayerVehicleID(playerid);
DestroyVehicle(id);
}
for(new i; i < GetMaxPlayers(); i++){
if(specing == playerid){
specing++;
while(!living[specing]){
specing++;
if(specing > GetMaxPlayers()-1) specing = 0;
}
PlayerSpectatePlayer(i, specing);
}
}
new count = 0;
for(new i; i < GetMaxPlayers(); i++) if(living) count++;
printf(\"DEBUG: Player alive count is %d\", count);
SetPlayerPos(playerid, 100.0, 100.0, 200.0);
TogglePlayerSpectating(playerid, true);
specing[playerid] = 0;
while(!living[specing[playerid]] && specing[playerid] < GetMaxPlayers()) specing[playerid]++;
PlayerSpectatePlayer(playerid, specing[playerid]);
if(count < 2){
newround = true;
SetTimer(\"NextRound\", 3000, false);
for(new i; i < GetMaxPlayers(); i++){
if(living){
new pName[MAX_PLAYER_NAME];
GetPlayerName(i, pName, 128);
format(outstr, 128, \"{CC33FF}A KÖRT {FFCC33}%s {CC33FF}NYERTE!\", pName);
SendClientMessageToAll(0xCC33FFFF, outstr);
points++;
}
}
}
}
}
return true;
}

 

public OnPlayerUpdate(playerid){
if(!newround && living[playerid]){
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(Z < 150.0){
   printf(\"DEBUG: ID %d knocked out, put in Spec\", playerid);
   new outstr[128];
   GetPlayerName(playerid, outstr, 128);
   format(outstr, 128, \"{FFCC33}%s {CC33FF}kiesett...\", outstr);
   SendClientMessageToAll(0xCC33FFFF, outstr);
   living[playerid] = false;
   if(IsPlayerInAnyVehicle(playerid)){
      new id = GetPlayerVehicleID(playerid);
      DestroyVehicle(id);
   }
   for(new i; i < GetMaxPlayers(); i++){
      if(specing == playerid){
          specing++;
          while(!living[specing]){
            specing++;
            if(specing > GetMaxPlayers()-1) specing = 0;
          }
          PlayerSpectatePlayer(i, specing);
      }
   }
   new count = 0;
   for(new i; i < GetMaxPlayers(); i++) if(living) count++;
   printf(\"DEBUG: Player alive count is %d\", count);
   SetPlayerPos(playerid, 100.0, 100.0, 200.0);
           TogglePlayerSpectating(playerid, true);
   specing[playerid] = 0;
   while(!living[specing[playerid]] && specing[playerid] < GetMaxPlayers()) specing[playerid]++;
   PlayerSpectatePlayer(playerid, specing[playerid]);
    if(count < 2){
        newround = true;
        SetTimer(\"NextRound\", 3000, false);
        for(new i; i < GetMaxPlayers(); i++){
            if(living){
                new pName[MAX_PLAYER_NAME];
                GetPlayerName(i, pName, 128);
          format(outstr, 128, \"{CC33FF}A KÖRT {FFCC33}%s {CC33FF}NYERTE!\", pName);
               SendClientMessageToAll(0xCC33FFFF, outstr);
               points++;
            }
        }
     }
}
}
return true;
}

 
Azt hiszem, mostanra mindenki megértette az indentifikáció fontosságát!
A fenti kódtól pedig ne tessék megijedni, csak illusztráció...
HOGYAN?
Az indentifikációt mindenki saját belátása szerint végzi, fõ az átláthatóság, ám az alábbiakban néhány elterjedtebb módszert mutatok be.
1.) Allman-stílus
Az Allman-stílus az ANSI C illetve vele együtt több C-alapú nyelv (pl. PAWN) hivatalosan támogatott behúzási módja.
Egy TAB-ot használ a behúzásra, a nyitó- és zárójeleket új sorba helyezi el az eredeti szinten.
Az indentifikáció akkor helyes, ha az adott kódrészlet befejezésével a kiindulási szintre érünk vissza.
PÉLDA:
 
while(x == y)
{
    valami();
    valami2();
}
ciklusonkivulivalami();

 
2.) Whitesmiths-stílus
Az Allman-stílustól eltérõen a nyitó- és zárójeleket behúzva írja.
Az intentifikáció akkor helyes ha a kód végén a kiindulástól egy szinttel beljebb vagyunk.
PÉLDA:
 
while(x == y)
    {
    valami();
    valami2();
    }
ciklusonkivulivalami();

 
3.) 1TBS-stílus
Jómagam is ezt használom.
A nyitójeleket az elõzõ sor végére rakja, a zárójeleket külön sorba eredeti szinten, de ha pl. else állítás van, akkor azonos sorban folytatja.
Az indentifikáció akkor helyes, ha az adott kódrészlet befejezésével a kiindulási szintre érünk vissza.
PÉLDA:
 
while(x == y){
    valami();
    valami2();
}
ciklusonkivulivalami();

 
További stílusok és példák: >> ITT <<
Még egyszer mondom: teljesen mindegy, ki hogyan használja a behúzásokat, de használnunk kell, hogy más számára is követhetõvé váljon a gondolatmenetünk.
 

18
SA-MP: Szerverfejlesztés / Online Gang Zone Creator
« Dátum: 2012. Április 13. - 09:55:06 »
Itt könnyedén tudsz bandazónákat készíteni. Az alábbi képen kattints egy tetszõleges pontra a bal egérgombbal, majd tartsd nyomva,kKözben mozgathatod az egeret, így a zóna mérete tetszés szerint állítható. [/quote]
Ide kattintva érhetõ el

19
SA-MP: Szerverfejlesztés / IP szûrõ
« Dátum: 2011. Szeptember 02. - 19:58:50 »
Írtam egy függvényt, mellyel a szövegen belül elvileg elég jól meg lehet találni az IP helyét. Mellékeltem egy szkriptet is.
ipfind
Paraméterek:
 
  • string[] - a szöveg, amelyen belül keresni szeretnénk

  • start - ahonnan a keresést indítani szeretnénk

  • &iplen - ha szükségünk van az ip hosszára, akkor ebbe írja bele


Visszatérés:
 
  • Ha található IP a szövegben, akkor annak kezdõkaraktere, ha pedig nem, akkor -1.

 
stock ipfind(const string[], start = 0, &iplen = -1)
{
new
    pos = -1,
ch = start,
Float:nums = 0,
Float:dots = 0;
while(string[ch++])
{
    if(string[ch] == \'\\0\' || string[ch] == \' \')
{
   continue;
}
if(\'0\' <= string[ch] <= \'9\')
{
    if(pos < 0)
   {
      pos = ch;
   }
   if(dots >= 3)
   {
       iplen = ch - pos;
   }
   nums++;
   if(nums > 3)
   {
            if(floatround(nums / dots) < 2)
      {
          nums = 0;
           dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
   }
   continue;
}
else if(string[ch] == \'.\')
{
   if(nums > 0)
   {
      dots++;
      if(dots > 3)
      {
          nums = 0;
            dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
      if(nums > 3)
      {
         if((floatround(nums / dots) < 2))
          {
              nums = 0;
              dots = 0;
            pos = -1;
            iplen = -1;
            continue;
         }
      }
   }
   else
   {
       if(dots > 0)
       {
           nums = 0;
            dots = 0;
         pos = -1;
         iplen = -1;
         continue;
      }
   }
   continue;
}
else
{
           if(0 < nums < 8 || 0 < dots < 3)
    {
         nums = 0;
          dots = 0;
      pos = -1;
      iplen = -1;
            }
            continue;
        }
}
if(nums >= 8)
{
if(floatround(nums / dots) < 2)
{
    nums = 0;
     dots = 0;
   pos = -1;
   iplen = -1;
}
}
else
{
    nums = 0;
dots = 0;
pos = -1;
iplen = -1;
}
if(iplen) iplen++;
return pos;
}

 
Szkript:
[pawn]// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
// ipfind függvényt ide másold
stock replacestring(source[], string1[], string2[])
{
new
    pos;
    pos = strfind(source, string1);
while(pos != -1)
{
   strdel(source, pos, pos + strlen(string1));
   strins(source, string2, pos, strlen(string2));
   pos = strfind(source, string1);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
new
    len,
   pos = ipfind(text, 0, len);
if(pos > -1)
{
    new
        ip[32];
   strmid(ip, text, pos, pos + len, sizeof(ip));
   replacestring(text, ip, \"[REKLÁM NINCS]\");
}
return 1;
}[/pawn]

20
SA-MP: Szerverfejlesztés / Fegyverek letiltása/engedélyezése
« Dátum: 2011. Augusztus 25. - 11:43:26 »
Fegyverek :: engedélyezése / tiltása
Leírás
Ezekkel a függvényekkel lehetõségünk nyílik bizonyos fegyvereket engedélyezni / letiltani.
Függvények:
 

  • DisableWeapons(...)
    A fegyverek letiltása. Például: DisableWeapons(37, 36, 35);


  • EnableWeapons(...)
    A fegyverek engedélyezése. Például: EnableWeapons(37, 36, 35);


  • EnableAllWeapons()
    Minden fegyver engedélyezése. Például: EnableAllWeapons();


  • WeaponIsDisabled(weaponid)
    Ellenõrzi, hogy egy fegyver le van-e tiltva. Például: if(WeaponIsDisabled(38)) print(\"A minigun le van tiltva\");


  • Weapon_Init()
    Elindítja az automatikus ellenõrzést. Ha valakinél tiltott fegyver van, akkor elveszi. Ajánlott az On FilterScript/GameMode Init eljárásokban használni.Weapon_Init();


Fegyverek táblázata
http://wiki.sa-mp.com/wiki/Weapons
Letöltés
http://pastebin.com/3kKbcVTp

21
SA-MP: Szerverfejlesztés / Night-Admin
« Dátum: 2011. Augusztus 24. - 14:45:12 »
:: Night-Admin ::
 
Ezt a szkriptet eredetileg a Play 1 Night 3 rendezvényre készítettem, de az egyeztetések után végül nem került az alkalmazására sor, tehát úgy döntöttem, hogy akkor inkább közkinccsé teszem.
Szerkesztés:
Mégis be fog kerülni, de egy újabb, jobb verzió.
Parancsok
Mielõtt bármelyik parancsot használod, be kell jelentkezned! (/rcon login jelszód)
 
  • /next - Következõ játékmód

  • /prev - Elõzõ játékmód

  • /mute - Némítás (idõre)

  • /unmute - Némítás törlése

  • /kick - Kirúgás

  • /ban - Kitiltás


Letöltés
http://solidfiles.com/d/cf113/

22
SA-MP: Szerverfejlesztés / Kapu kezelõ
« Dátum: 2011. Augusztus 24. - 14:22:58 »
Kapu kezelõ :: béta
A rendszer lényege alapvetõen az, hogy egyszerûen hozzunk létre kapukat.
1. Elsõként is, ha akarjuk, akkor kapcsoljuk be az automatikus kapukezelõt:
Gate_Init();
Ha ez nem történik meg, akkor sincsen baj, hiszen a rendszert lehet használni, csak a kapuk ki/be csukását nekünk kell megoldani. Így akár ez paranccsal is mûködhet majd.
2. A legfontosabb lépés pedig, hogy hogyan is hozzunk létre kapukat. Erre két függvény van.
Gate_New(): Itt meg lehet adni, hogy a kapu nyitott/zárt állapotban legyen, mekkora legyen a választávolsága (azaz mekkora távolságon belül nyíljon ki valakinek), és a mozgás sebességét.
Gate_Create(): Az elõzõ függvény egyszerûsített változata. Ha akarjuk, megadhatjuk a sebességet is a koordináták elõtt, de elég csupán a koordinátákat megadni.
Minden létrehozott kapunak egy egyedi azonosítószáma lesz, amivel a késõbbiekben hivatkozhatunk rá.
3. A rendszer számtalan más funkcióval is rendelkezik, ezek csupán a létrehozás utáni adatmódosítást szolgálják.
Ezek közül kiemelendõ:
Gate_Open() - A kapu kinyitása
Gate_Close() - A kapu bezárása
Gate_IsOpened() - A kapu nyitottságának megállapítása
A zártság megállapítása:
[PAWN]#define Gate_IsClosed(%1) if(!Gate_IsOpened(%1))[/PAWN]
Illetve, ha idõközben a kapu automatikusságát ki akarjuk kapcsolni:
Gate_ToggleAutoResponse(mygate, 0);
Ha ez megtörtént, akkor a kapu nem fog magától kinyílni. Ilyenkor kinyithatjuk például paranccsal is:
[PAWN]COMMAND:open(playerid)
{
    Gate_Open(mygate);
    return 1;
}[/PAWN]
Itt is lefuttathatjuk az ellenõrzést, mert az magától nem fog lefutni. Például:
[PAWN]COMMAND:open(playerid)
{
    if(funcidx(\"OnPlayerOpenGate\"))
{
       if(!CallRemoteFunction(\"OnPlayerOpenGate\", \"ii\", playerid, mygate)) return 0;
}
    Gate_Open(mygate);
    return 1;
}[/PAWN]
Az OnPlayerOpenGate() függvény lehetõvé teszi, hogy mielõtt kinyílik egy kapu (egy adott játékosnak), meg tudjuk akadályozni a kinyílását.
Ha nem kell a kapu, akkor törölhetjuk:
[PAWN]Gate_Remove(mygate);[/PAWN]
Röviden ennyi. A rendszer még fejlesztés alatt áll...
Teszt szkript:
[PAWN]#include <a_samp>
#include <gate>
#include <zcmd>
// Define coordinates
#define CLOSE -1515.4235, -263.9250, 6.0117
#define OPEN -1515.4387, -263.9299, 1.5194
new mygate = 0;
public OnFilterScriptInit()
{
    Gate_Init();
    mygate = Gate_Create(971, OPEN, CLOSE);
    return 1;
}
public OnFilterScriptExit()
{
    Gate_Remove(mygate);
    return 1;
}
// Gate only for team \'50\'
public OnPlayerOpenGate(playerid, gateid)
{
    if(GetPlayerTeam(playerid) != 50) return 0; // Don\'t open the gate
    return 1;
}
// Team changer command\'s
COMMAND:team(playerid)
{
    SetPlayerTeam(playerid, 50);
    return 1;
}
COMMAND:team2(playerid)
{
    SetPlayerTeam(playerid, NO_TEAM);
    return 1;
}[/PAWN]
forward OnGateOpen(gateid); - Amikor a kapu kinyílik
forward OnGateClose(gateid); - Amikor a kapu záródik
forward OnPlayerOpenGate(playerid, gateid); - Mielõtt a kapu kinyílik egy játékosnak
Függvények:
[PAWN]Gate_IsActive(gateid)
Gate_IsValid(gateid)
Gate_SetResponseDistance(gateid, Float:dis)
Gate_GetResponseDistance(gateid, &Float:dis)
Gate_SetSpeed(gateid, Float:speed)
Gate_GetSpeed(gateid, &Float:speed)
Gate_SetModel(gateid, modelid)
Gate_GetModel(gateid)
Gate_ToggleAutoResponse(gateid, toggle)
Gate_IsAutoResponse(gateid)
Gate_GetObjectID(gateid)
Gate_IsOpened(gateid)
Gate_SetRot(gateid, Float:rx, Float:ry, Float:rz)
Gate_GetRot(gateid, &Float:rx, &Float:ry, &Float:rz)
Gate_SetOpenPos(gateid, Float:x, Float:y, Float:z)
Gate_SetClosePos(gateid, Float:x, Float:y, Float:z)
Gate_GetClosePos(gateid, &Float:x, &Float:y, &Float:z)
Gate_Open(gateid)
Gate_Close(gateid)
Gate_New(modelid, open, autores, Float:resdis, Float:speed, Float:open_x, Float:open_y, Float:open_z, Float:close_x, Float:close_y, Float:close_z, Float:rot_x = 0.0, Float:rot_y = 0.0, Float:rot_z = 0.0)
Gate_Create(modelid, Float:open_x, Float:open_y, Float:open_z, Float:close_x, Float:close_y, Float:close_z, Float:rot_x = 0.0, Float:rot_y = 0.0, Float:rot_z = 0.0)
Gate_Remove(gateid)
Gate_Init()[/PAWN]
Letöltés:
http://solidfiles.com/d/a4a3f/
Hibát látsz? Ötleted van? Írd meg!
Köszönet:
 
  • Incognito - GVar, Streamer

  • Y_Less


23
SA-MP: Szerverfejlesztés / Teleport kezelõ 3.0 [5. kiadás]
« Dátum: 2011. Augusztus 18. - 18:00:34 »
:: Teleport kezelõ 3.0 ::
 
Bevezetõ
Ezt a projektet még 2009 végén kezdtem, de még elég hiányos volt akkor. Az évek során közel 50 függvényre bõvült. A lényeg viszont nem változott: kezeljük a teleportokat egyszerûen!
Ezúttal egy komplett szervercsomagot készítettem, hogy a lehetõ legkönnyebb legyen kiigazodni a rendszeren.
Az új verzió a korábbiakhoz képest rengeteg újítást / javítást tartalmaz, mint például:
 
  • A teleportok a szerveren globálisan jönnek létre / globálisan lehet õket kezelni

  • Részletgazdag bemutatószkriptek


Fontos, hogy ezzel a rendszerrel kis logikával a teleportok összes fajtája (pl. dm) létrehozható.
A teleporton rengeteg tulajdonság beállítható, például:
 
  • 3 dimenziós szöveg (és annak színe, látótávolsága)

  • Virtuális azonosító (interiorid)

  • Virtuális világ (worldid)

  • Csak gyalog / jármûben (és/vagy annak sofõrjeként) / rcon adminként engedjen teleportálni


És folytathatnám a sort.
Fontos:
 
  • Minden teleport egy azonosítóval (teleportid) van ellátva, ezáltal tudsz egyes teleportokra hivatkozni.

  • Nem ajánlott két ugyanolyan parancsot / nevet megadni, mert a megkeresés esetén csak egyet tudsz közülük használni.


Egy szemléltetés, hogy mennyire egyszerû:
 
CreateTeleport(\"SF\",\"/sf\",-1495.9395,-141.1882,15.0702,315.0674);

 
\"teleport.png\"
Parancs a teleportok lementésére
[pawn]CMD:saveteleport(playerid, params[])
{
    #if !defined MAX_TELEPORT_NAMELEN
        #define MAX_TELEPORT_NAMELEN 32
    #endif
    #if !defined MAX_TELEPORT_CMDLEN
        #define MAX_TELEPORT_CMDLEN 32
    #endif
    new name[MAX_TELEPORT_NAMELEN],command[MAX_TELEPORT_CMDLEN];
    if(sscanf(params, \"s[32]s[32]\", name, command))
        return SendClientMessage(playerid,0xFFFFFFFF, \"Use: /saveteleport [name][command]\");
    new File:savedteleports = fopen(\"savedteleports.txt\", io_write);
    if(savedteleports)
    {
        new Float:x, Float:y, Float:z, Float:angle;
        if(IsPlayerInAnyVehicle(playerid))
        {
            new vehicleid = GetPlayerVehicleID(playerid);
            GetVehiclePos(vehicleid,x,y,z);
            GetVehicleZAngle(vehicleid,angle);
        } else {
            GetPlayerPos(playerid,x,y,z);
            GetPlayerFacingAngle(playerid,angle);
        }
        new formatstring[256];
        format(formatstring, 256, \"CreateTeleport(\\\"%s\\\", \\\"%s\\\", %.3f, %.3f, %.3f, %.3f);\\r\\n\",
            name, command, x, y, z, angle);
        fwrite(savedteleports, formatstring);
        fclose(savedteleports);
        SendClientMessage(playerid,0xFFFFFFFF, \"Teleport saved to savedteleports.txt (in your scriptfiles folder).\");
    }
    return 1;
}[/pawn]
3 dimenziós szöveg formázása
Ez a funkció a legújabb verzióban került hozzáadásra. Segítségével könnyedén megformázhatjuk a teleport helyén megjelenõ 3 dimenziós szöveget, és ezzel is még egyedibbé tehetjük a teleportokat.
A szövegbe az alábbiakat kell beleírni, és azok át fognak változni a megfelelõ dologra:
{NAME} - A teleport neve
{COMMAND} - A teleport parancsa
{PRICE} - A teleport ára
{NEWLINE} - Új sor kezdése
{RRGGBB}(samp) - Szöveg átszínezése
Például:
[pawn]public OnFilterScriptInit()
{
    new teleportid = CreateTeleport(\"LS\",\"/ls\",1933.2625,-2407.8191,14.2618,183.6625);
    Teleport_Set3DTextFormat(teleportid, \"{0522FF}Name: {FFFFFF}{NAME}{NEWLINE}{0522FF}Command: {FFFFFF}{COMMAND}{NEWLINE}{0522FF}Price: {FFFFFF}{PRICE}\");
    return 1;
}[/pawn]
Ennek az eredménye ez lesz:
\"result3dtextformat.png\"
Letöltés
http://gtaforum.hu/files/teleportv3_rel2.rar
Frissítés (5. kiadásra): http://solidfiles.com/d/abb0f/
Weboldal
http://gtaforum.hu/load/teleport (hamarosan frissítem)
A weboldalon egyszerûen generálható teleport.
Leírás
Leírás hamarosan.
Köszönet
 
  • Incognito - GVar plugin

  • ZeeX - ZCMD (csak a példaszkriptekben)

  • Betamaster - Színfüggvények

  • Westie- strreplace

  • Y_Less


24
SA-MP: Szerverfejlesztés / Teleport kezelõ
« Dátum: 2011. Július 10. - 19:35:08 »
Szia!
Elkészítettem egy weboldalt a teleportkezelõhöz, ezentúl csak ott fognak az információk frissülni! Ízelítõ:
A teleportkezelõ ötlete egészen 2009 decemberéig vezethetõ vissza, akkor írtam meg elõször, meglehetõsen hibásra, és kevés funkcióval. De végülis ez egy tesztverzió volt. Úgy láttam, látom máig, hogy az embereknek tetszik és használják.

Az évek során kiadtam pár újabb verziót, bár az áttörést a 2010 nyarán értem el. Megközelítõleg 50 funkció van a rendszerben azóta, amik rendkívûli sokoldalúságot biztosítanak. Ámbár ezt nagyon kevesen használják ki.


Ezt az oldalt éppen ezért abból a célból hoztam létre, hogy akik a teleportkezelõmmel szeretnének dolgozni, minden szükséges segítséget, információt megkapjanak hozzá. További böngészésért használd a menüben lévõ funkciókat!



WEB: http://sa-mp.hu/teleport/
GENERÁTOR: http://sa-mp.hu/teleport/?a=generator

25
Fórum Archívum (Témák/Fórumok) / Magyar San Andreas Multiplayer Wiki
« Dátum: 2011. Június 17. - 11:16:34 »
* A téma hpeter94 engedélyével lett nyitva!
Sziasztok!
Szerintem ez a projekt senki számára sem lehet újdonság. Mindkét fórum számtalanszor elkezdte, de sosem fejezte be. Ha nem is fejeznénk be teljesen, de szeretnénk egy végleges verziót alkotni. Arre kínál ez a téma most lehetõséget. És arra, hogy a 2 fórum nekiálljon, és elkészítse. Arra, hogy legyen egy egységes SA-MP Wiki, magyarul. Ez véleményünk szerint felülmúlna minden PAWN leírást, mivel ha valaki elolvas egy igényes fordítást, el tudja sajátítani az alapismereteket.
Igazából én önként jelentkezõket várnék, akik segítenek ebben a projektben.
(Nagyon megkérek mindenkit, ne úgy tekintsen erre, mint a másik fórum szarára, hanem mint a két fórum által közösen alkotott Wikire->amennyiben sikeresnek látszik a közös projekt, ki fogjuk rakni ennek a fórumnak a bannerét, valamint innen többeknek adunk admint).
http://wiki.sa-mp.hu/
http://sa-mp.hu/wiki

26
Archívum / [DEV][HUN] Counter SA at WAR
« Dátum: 2011. Február 06. - 10:16:33 »
Üdv!
Ez a szerver a Counter Strike játékot foglalja magába, minél inkább próbáljuk jobbra és jobbra fejleszteni. A fejlesztés múlt hét hétvégén kezdõdött, és tegnap fogtam bele újra, a szerver mostanra már eljutott egy béta verzióba. Amennyiben kész a bomb system, a szerveren lehet játszani.
A szerveren 12 perces mapok vannak, amelyeken akárhány kör lejátszódhat. Egy nyert kör, egy pont egy csapatnak, és a map végén a szerver kihirdeti a gyõztes csapatot (értelemszerûen, amelyiknek több pontja van).
Van csapat elosztás, így egy csapat nem lehet emberfölényben egy másik csapattal szemben.
Pár elõzetes kép (a skinek külön letölthetõk a szerverhez készült IMG-ben, erre majd máshol kitérek):
Karakterválasztó:
\"sa-mp-151.png\"
Fegyvermenü:
\"sa-mp-152.png\"
Játékból kép (pályaváltás után):
\"sa-mp-150.png\"
Ha meghalsz, akkor specelsz:
\"sa-mp-149.png\"
IP Cím: 91.82.84.98:8013

27
Leírások/Útmutatók / Hogyan frissítsünk 0.3c-re?
« Dátum: 2010. December 30. - 01:00:15 »
Sokan feltennék ezt a kérdést, így szeretném tisztázni.
Ahhoz, hogy a módot és-/vagy szkripted kompatibilissá tedd az új, 0.3c verzióval, nem kell mást tenned, mint hogy megnyitod a szkriptet, és újrafordítod 0.3c-re frissített pawnoval.
Azonban ez nem elég, ha egy plugint használsz. Ezesetben keresd fel a készítõ vagy a hivatalos fórum oldalát, ahol rövid idõn belül ki lesz írva a frissítés.
Ha bármi kérdésetek lenne, szívesen válaszolok, itt tegyétek fel, ebben a témában.
Üdv,
GameStar

28
SA-MP: Szerverfejlesztés / Teleport kezelõ 2.0a R1
« Dátum: 2010. Október 16. - 11:41:32 »
A régebbi teleportkezelõm legújabb verziója, többek között újítás:
- Alap üzenetek törölve, helyettesítve egy FS-el
- In-Game editor felület
- A föggvények nevei rendesen is elérhetõk (pl. CreateTeleport, DestroyTeleport) - a régik ettõl független jók
- OnPlayerFailedTeleport-hoz reason hozzáadása (hogy miért nem sikerült teleportálnia) - ezt egy FS írja is
Új funkció a TeleportPlayer és a TeleportPlayerEx, amely egyszerûen teleportálja a játékost, pl TeleportPlayer(id,\"/teszt\") / TeleportPlayerEx(id,0);
Itt tölthetõ le:
http://solidfiles.net/d/d4ba/

29
SA-MP: Szerverfejlesztés / GameStar
« Dátum: 2010. Október 15. - 22:23:39 »
Általam készített munkák / általam átalakított munkák / részt vettem a projektben (nem mindet teszteltem le):
GRF http://solidfiles.com/d/a9a/
Több száz függvény van benne.
Fixchars http://solidfiles.com/d/ikKV/
A magyar karaktereket javítja ki a feliratokban.
C4 http://solidfiles.net/d/71282/
Bombát rakhatsz vele a kocsiba
 

Tuning menü (Professzionális) http://solidfiles.net/d/6325/
Nagyon részletes tuning menü, magyar, csak átalakítás
\"tuning.png\"
Sebességmérõ http://solidfiles.net/d/4f19b/
Sebességmérõ, lakott/lakatlan terület, sebességérték elszínezése
\"speedo.png\"
Antiflood http://solidfiles.com/d/58bd/
A gyorsírást gátolja a chat-ben.
Chatbot http://gtaforum.hu/index.php/topic,1111.0.html
A chatben egy meserséges játékos írogat.
HaaaX http://solidfiles.com/d/780a7/
Fejedhez vág egy monitort.
Fájlban lévõ felhasználók MySQL-be konvertálása http://solidfiles.com/d/ef4f/
A fájlban lévõ INI alapú felhasználókat MySQL-be konvertálja át.
Csapatkezelõ http://solidfiles.com/d/hBHu/
Csapatok részletesebb kezelése.
Jármû lekérõ http://solidfiles.com/d/NLjg/
30 másodpercenként engedélyezi egy jármû lerakását a /v paranccsal.
Burger shot MAP http://gtaforum.hu/index.php/topic,2858.0.html
 

Egyenlõre ennyit találtam, majd lesz még.

30
Beszélgetés / Magyar SAMP szerverek
« Dátum: 2010. Október 10. - 12:47:28 »
Tisztelt Tagok!
Elkészítettük a szerverlista új verzióját.
A magyar szervereket nagy részletességgel tartja nyilván, bannert készít (állót; fekvõt), amelyet egy link segítségével akárhova beágyazhatsz (fórum,weboldal...), továbbá nézi a szerver verzióját, rendelkezésre állását, és a szerveren lévõket %-ban is megadja. Csak kattints rá egy szerverre. Végül, a szerverek nagyságrendi sorrendben vannak, így remélhetõleg mindig a legjobbak vannak felül.
Fontos megemlíteni, hogy erre a szerverlistára csak is kizárólag hosztolt szerverek kerülnek ki, melyeknek állandó IP címük van, amennyiben a Te szervered ennek megfelel, de nincs kint, jelezheted a [email protected] e-mail címen, feltétlen tüntesd fel az IP-t és a hoszt nevét, a szervered 5 napon belül ki lesz téve.
Íme egy demó:
\"80_249_173_202_8005_h.png\"   
\"80_249_173_202_8005_v.png\"
A bannerek egy állandó linen helyezkednek el, és a kép folyamatosan frissül..

Oldalak: 1 [2] 3 4 ... 6
SimplePortal 2.3.7 © 2008-2024, SimplePortal