• logo_cipsoft
    Nowe serwery zostały otwarte 27 Sie 2025:
    Escura (Retro Open PvP) Mystera (Retro Open PvP) us_logo Penumbra (Retro Open PvP)

Support - pomoc przy pisaniu skrypt?w

Status
Zamknięty.
Odp: Support - pomoc przy pisaniu skrypt?w

Witam!
Gra?em kiedy? na Ots, gdzie za pomoc? komendy !sex mog?em z partnerk? "wsp???y?". Polega?o to, i? po kilkunastym napisaniu !sex powsta? "Tibia doll", kt?ry nosi? nazw? mojego nicku i partnerki. Wiem, ?e tego typu komendy s? tylko dla bardzo do?wiadczonych skrypter?w, lecz bardzo bym by? wdzi?czny za odpowied?. Prosz? r?wnie? o inne komendy pisane za pomoc? wykrzyknika >co? z rodzaju !online, !serverinfo<Dzi?kuj?..wszelkie odpowiedzi prosz? kierowa? pon numerem gg: 17523446.
 
Odp: Support - pomoc przy pisaniu skrypt?w

Witam!
Gra?em kiedy? na Ots, gdzie za pomoc? komendy !sex mog?em z partnerk? "wsp???y?". Polega?o to, i? po kilkunastym napisaniu !sex powsta? "Tibia doll", kt?ry nosi? nazw? mojego nicku i partnerki. Wiem, ?e tego typu komendy s? tylko dla bardzo do?wiadczonych skrypter?w, lecz bardzo bym by? wdzi?czny za odpowied?. Prosz? r?wnie? o inne komendy pisane za pomoc? wykrzyknika >co? z rodzaju !online, !serverinfo<Dzi?kuj?..wszelkie odpowiedzi prosz? kierowa? pon numerem gg: 17523446.
Pierw szukamy potem zadajemy pytania. Link.
 
Odp: Support - pomoc przy pisaniu skrypt?w

Ja bym potrzebowal funcje ktora zawsze dodaje lvl. Mialem if getplayerlevel (cid,1) Ale mi nie dziala. Wiem ze jest jakas dluzsza funkcja.Alenie pamientam jej.
 
Odp: Support - pomoc przy pisaniu skrypt?w

A ja mam pytanie, potrzebuj? to do skryptu.
Jak zrobi? w .lua, ?eby przydziela?o id w takiej kolejno?ci 1,2,3... ?
Ehh najmocniejszy w tym nie jestem, by? mo?e to jest ?atwe, ale nie umiem sobie z tym poradzi? :) Pozdrawiam
 
Odp: Support - pomoc przy pisaniu skrypt?w

Ja bym potrzebowal funcje ktora zawsze dodaje lvl. Mialem if getplayerlevel (cid,1) Ale mi nie dziala. Wiem ze jest jakas dluzsza funkcja.Alenie pamientam jej.


getPlayerLevel(cid) - pobieranie poziomu gracza(cid)
doPlayerAddLevel(cid, 1) - dodawanie graczowi(cid) poziomu(1)


-----------------------------------------------------------------------------------------------
A ja mam pytanie, potrzebuj? to do skryptu.
Jak zrobi? w .lua, ?eby przydziela?o id w takiej kolejno?ci 1,2,3... ?
Ehh najmocniejszy w tym nie jestem, by? mo?e to jest ?atwe, ale nie umiem sobie z tym poradzi? :) Pozdrawiam

Troch? "noobski" spos?b ale narazi? nie wiedz? innych odpowiedzi :P
local id = getPlayerStorageValue(cid, 1000) + 1
...
doPlayerSetStorageValue(cid, 1000, id)
...
Storage 1000 b?dzie trzyma?o value np 1, kiedy funkcja si? powt?rzy value zmieni si? na 2, potem na 3 i tak do niesko?czono?ci, chyba ?e dasz warunek "if getPlayerStorageValue(cid, 1000) <= 100 then" wtedy tylko do 100 b?dzie ci liczy?o.


Je?li to ma by? dla wszystkich graczy to mo?na zamiast player da? global:
local id = getGlobalStorageValue(1000) + 1
...
setGlobalStorageValue(1000, id)
...


To jest 1 spos?b, mo?e kto? poda lepszy i ?atwiejszy :)



PS: Tym postem nabi?em magiczn? liczb? pierwszych "Posty: 100"

PS do za?o?yciela tematu: Dodaj mnie do listy pomocnik?w jak uwa?asz, ?e jestem w stanie co? wnie?? do tego tematu, ja ch?tnie mog? zajmowa? si? skryptami i problemami jak tylko b?d? potrafi? :)
 
Ostatnia edycja:
Odp: Support - pomoc przy pisaniu skrypt?w

Takie ma?e zastrze?enie do tego co napisa?e? wy?ej o tym Global storage... nie wiem jak jest w tych nowszych wersjach ale jak chcesz to robi? takim sposobem to nie zapomnij jeszcze w configu zaznaczy? ?eby sie global storage value zapisywa?o.
 
Odp: Support - pomoc przy pisaniu skrypt?w

I tak mnie to nie satysfakcjonuje(naprawd? trudne s?owo), nie chodzi mi o co? takiego :). Potrzebowa?bym raczej czego? takiego, ?eby id te by?o zapisywane w bazie danych, a te id nie mo?e si? powtarza? :P czy w og?le jest to mo?liwe w lua?. Sorry, ?e nie sprecyzowa?em powy?ej pytania. Za wszelk? pomoc dzi?kuj? z g?ry. :)
 
Ostatnia edycja:
Odp: Support - pomoc przy pisaniu skrypt?w

I tak mnie to nie satysfakcjonuje(naprawd? trudne s?owo), nie chodzi mi o co? takiego :). Potrzebowa?bym raczej czego? takiego, ?eby id te by?o zapisywane w bazie danych, a te id nie mo?e si? powtarza? :P czy w og?le jest to mo?liwe w lua?. Sorry, ?e nie sprecyzowa?em powy?ej pytania. Za wszelk? pomoc dzi?kuj? z g?ry. :)


To b?dzie ca?kiem podobnym sposobem, masz tu dane i opis:

local pobiera_dane = db.getResult("SELECT * FROM accounts WHERE `id` = ".. getPlayerAccountId(cid) ..";")
id = tonumber(pobiera_dane:getDataInt("zmienna_id"))
local new_id = id + 1

...

db.executeQuery("UPDATE `accounts` SET `zmienna_id`=" .. new_id .. " WHERE id = ".. getPlayerAccountId(cid) ..";")

Info:

local pobiera_dane - nakierowuje na baze danych i wpis w nim zawarty
id - zmienna kt?ra b?dzie pobiera?a liczbe "zmiennego id" od bazy kt?r? pokarzesz w "pobiera_dane"
local new_id - nowe id jakie zostanie zapisane czyli o 1 wi?ksze
zmienna_id - liczba "id" ktora bedzie sie zmienia?
accounts - baza danych (np: accounts, players, storages, guilds etc.)
getPlayerAccountId(cid) - pobiera ID konta graczowi(cid)
db.executeQuery - zapisuje now? id na koncie


Jak co? b?dzie nie jasne to ?mia?o pytaj, powinno to dzia?a?
 
Ostatnia edycja:
Odp: Support - pomoc przy pisaniu skrypt?w

Nie o to mi chodzi :P
To ma przypisywa? ca?kowicie nowe unikalne id do innej tabeli w bazie danych. Ca?y skrypt mam opanowany tylko w?a?nie tego mi brak :).
Chodzi o takie co?, ?e np. gracz wypowie komend?, a to ?e zosta?a ona u?yta zapisze mi w bazie danych. Wszystko ju? mam jako? sobie z tym poradzi?em, ale nie wiem jak zrobi?, ?eby przypisywa?o do tego id (1,2,3.... i tak do ko?ca.). W og?le dzi?ki za fatyg? :P Ju? leci rep do Ciebie :), a jak by? jeszcze to mi pom?g? zrobi? to ju? b?d? dozgonnie wdzi?czny.:D
 
Odp: Support - pomoc przy pisaniu skrypt?w

Nie o to mi chodzi :P
To ma przypisywa? ca?kowicie nowe unikalne id do innej tabeli w bazie danych. Ca?y skrypt mam opanowany tylko w?a?nie tego mi brak :).
Chodzi o takie co?, ?e np. gracz wypowie komend?, a to ?e zosta?a ona u?yta zapisze mi w bazie danych. Wszystko ju? mam jako? sobie z tym poradzi?em, ale nie wiem jak zrobi?, ?eby przypisywa?o do tego id (1,2,3.... i tak do ko?ca.). W og?le dzi?ki za fatyg? :P Ju? leci rep do Ciebie :), a jak by? jeszcze to mi pom?g? zrobi? to ju? b?d? dozgonnie wdzi?czny.:D


To na zasadzie np:

Fajny plajerr [666]: utevo lux

i w bazie danych wpisuje si? ?e: "Fajny player" u?y? s??w "utevo lux" ??
 
Odp: Support - pomoc przy pisaniu skrypt?w

Chodzi mi o takie co?, leader guild wpisuje /war-accept i tu musisz przypisa? war_id. Ca?? reszt? mam, tylko takie co? mi zosta?o.
No i oto mi chodzi, ?eby te war_id nie mog?o si? nigdy powt?rzy?, bo rozwali ca?y skrypt. Wiesz, leader mo?e wywo?a? setki wojen i ka?da b?dzie mia?a inne id.
 
Odp: Support - pomoc przy pisaniu skrypt?w

AUTO-INCREMENT w kolumnie odpowiedzialnej za war_id?
 
Odp: Support - pomoc przy pisaniu skrypt?w

No spoko, tylko jak teraz to zdefiniowa? w lua?
Je?eli powiesz reputek poleci :)
EDIT: @Down
No to ja wiem :P tylko jak teraz napisa? w lua, ?eby nadawa?o id? Wpisa? po prostu ?eby nadawa?o id=1 i to wystarczy, a baza sama b?dzie temu nadawa?a poprawne id?
Edytuje, bo ju? nie chce nabija? post?w w tym temacie :)
 
Ostatnia edycja:
Odp: Support - pomoc przy pisaniu skrypt?w

Tego nie definiujesz w lua, tylko nadajesz ten atrybut kolumnie w bazie danych.
 
Odp: Support - pomoc przy pisaniu skrypt?w

Ale chyba tak nie b?dzie, musisz przydzieli? 2 id...
1 id wojny, kt?re si? nie powt?rzy i tak jak napisali wy?ej nadajesz je w bazie, oraz 2 id playera/gildi tak aby wykrywa?o ?e to player ma wojn?, no chyba ?e to ma by? tylko na stron? :P

Nie jestem pewny na 100% ale ten wpis powinien dzia?a? tak jak ty chcesz (ID wpisu - losowe, player - id gracza z bazy danych)

db.executeQuery("UPDATE `wars` SET `player` = " .. getPlayerGUID(cid) .. ";")

Jak ci zadzia?a to napisz xD

PS: Nie jestem pewny, ca?y czas si? zastanawiam czy UPDATE czy INSERT, ale chyba nie bo insert wprowadza zmian? w ju? stworzonym wpisie a Update tworzy wpis... Jak si? myl? to wybaczcie/poprawcie mnie =>

Jeszcze tak sobie pomy?la?em, jak zrobisz w bazie wi?kszy wpis to mo?esz doda? kilka bajer?w np:
Max Glosnik [111]: !war "depilator
potem w skrypcie pobierasz param i wstawiasz je jako local, wtedy b?dziesz m?g? zrobi? na stronie np:
"Lider gildi Max Glosnik og?osi? wojn? z gildi? Depilator."

Oraz jakby? by? ch?tny to bym m?g? pomy?le? nad fragami do tej wojny, skrypt kt?ry wykrywa czy postacie s? w wojnie i za ka?dym zabiciem dodaje punkt gildii kt?ra zabi?a.


\/ DOWN
Dok?adnie :P
 
Ostatnia edycja:
Odp: Support - pomoc przy pisaniu skrypt?w

To w bazie danych w tabeli musisz mie?:

id MEDIUMINT NOT NULL AUTO_INCREMENT,

I wtedy id b?dzie ros?o w g?r? od pierwszego rekordu.
 
Odp: Support - pomoc przy pisaniu skrypt?w

Kod:
-- By Tako Dako AKA Avixu
-- v 0.1.1
local config = {
-- Teleportacja tylko pod warunkiem, ze nie ma battle
-- 0 = Nie, 1 = Tak
teleportOnlyIfNoBattle = 1,
-- Teleportacja do temple (jesli nie, podaj pozycje nizej)
-- 0 = Nie, 1 = Tak
teleportToTemple = 1,
-- Teleportacja do okreslonej pozycji
teleportPosition = { x=95, y=95, z=7 },
-- Czy ma sie konczyc
-- 0 = Nie, 1 = Tak
removeItem = 0,
-- Efekt magiczny w miejscu uzycia
-- Numerek lub nazwa z constanta
startMagicEffect = 2,
-- Efekt magiczny w miejscu przeteleportowania
-- Numerek lub nazwa z constanta
destinationMagicEffect = 10,
-- Wiadomosc przy probie teleportacji z battle
-- Numerek lub nazwa z constanta albo wlasna
-- wiadomosc (musi byc w cudzyslowiach)
errorMessage = "You may not use teleportation while you have battle!"
}
function teleportToTemple(cid, item, fromPosition, itemEx, toPosition)
 doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) -- teleportuj do temple
 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)), config.destinationMagicEffect) -- daj efekt na miejscu
 doSendMagicEffect(toPosition, config.startMagicEffect) -- daj efekt na poczatku
end
function teleportToPosition(cid, item, fromPosition, itemEx, toPosition)
 doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) -- teleportuj do temple
 doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)), config.destinationMagicEffect) -- daj efekt na miejscu
 doSendMagicEffect(toPosition, config.startMagicEffect) -- daj efekt na poczatku
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
if config.teleportOnlyIfNoBattle == 1 then -- jesli ma teleportowac tylko bez battle
  if getCreatureCondition(cid, 1024) == FALSE then -- jesli nie ma battle
    if config.teleportToTemple == 1 then -- jesli ma teleportowac do temple
          return teleportToTemple -- zwroc funkcje teleportToTemple
            if config.removeItem == 1 then -- jesli ma sie konczyc
              doRemoveItem(item.uid, 1) -- usun item
            else
              return FALSE
            end
    else -- jesli ma teleportowac w okreslone miejsce
          return teleportToPosition -- zwroc funkcje teleportToPosition
          doRemoveItem(item.uid, 1) -- usun item
        else
          return FALSE
        end
        end
   else -- inaczej wyslij komunikat
    doPlayerSendCancel(cid, config.errorMessage)
    end
  else
    if config.teleportToTemple == 1 then -- jesli ma teleportowac do temple
          return teleportToTemple -- zwroc funkcje teleportToTemple
            if config.removeItem == 1 then -- jesli ma sie konczyc
              doRemoveItem(item.uid, 1) -- usun item
            else
              return FALSE
            end
    else -- jesli ma teleportowac w okreslone miejsce
          return teleportToPosition -- zwroc funkcje teleportToPosition
            if config.removeItem == 1 then -- jesli ma sie konczyc
              doRemoveItem(item.uid, 1) -- usun item
            else
             return FALSE
        end
      end
   end
end

Czemu wywala mi b??dy? Dok?adnie to:
(41. linia) 'end' expected (to close 'if' at the line 39) near 'if'
 
Odp: Support - pomoc przy pisaniu skrypt?w

Zmusze cie do myslenia i powiem tyle, ze nie zamknales jakiejs funkcji end'em. :p
Sprawdz czy zostaly zamkniete wszystkie petle if
 
Odp: Support - pomoc przy pisaniu skrypt?w

To raczej nie jest brak zamkni?cia jednej p?tli, on ma za du?o 'else'.
Wychodzi na to ?e 1 else jest do:
function onUse(cid, item, fromPosition, itemEx, toPosition)
dlatego wywala b??d...

PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if config.teleportOnlyIfNoBattle == 1 then -- jesli ma teleportowac tylko bez battle
            if getCreatureCondition(cid, 1024) == FALSE then -- jesli nie ma battle
               if config.teleportToTemple == 1 then -- jesli ma teleportowac do temple
                  return teleportToTemple -- zwroc funkcje teleportToTemple
                  if config.removeItem == 1 then -- jesli ma sie konczyc
                     doRemoveItem(item.uid, 1) -- usun item
                  else
                      return FALSE
                  end
               else -- jesli ma teleportowac w okreslone miejsce
                    return teleportToPosition -- zwroc funkcje teleportToPosition
                    doRemoveItem(item.uid, 1) -- usun item
               else
                    return FALSE
               end
            end
        else -- inaczej wyslij komunikat
             doPlayerSendCancel(cid, config.errorMessage)
        end
------>>>> else <<<<------
      if config.teleportToTemple == 1 then -- jesli ma teleportowac do temple
         return teleportToTemple -- zwroc funkcje teleportToTemple
         if config.removeItem == 1 then -- jesli ma sie konczyc
            doRemoveItem(item.uid, 1) -- usun item
         else
            return FALSE
         end
      else -- jesli ma teleportowac w okreslone miejsce
         return teleportToPosition -- zwroc funkcje teleportToPosition
         if config.removeItem == 1 then -- jesli ma sie konczyc
             doRemoveItem(item.uid, 1) -- usun item
         else
            return FALSE
         end
      end
------>>>> end <<<<------
end
Moim zdaniem to w?a?nie to zak?uca prac? skryptu


Oraz nie podoba mi si? troch? ten warunek:
PHP:
               if config.teleportToTemple == 1 then -- jesli ma teleportowac do temple
                  return teleportToTemple -- zwroc funkcje teleportToTemple
                  if config.removeItem == 1 then -- jesli ma sie konczyc
                     doRemoveItem(item.uid, 1) -- usun item
                  else
                      return FALSE
                  end
               else -- jesli ma teleportowac w okreslone miejsce
                    return teleportToPosition -- zwroc funkcje teleportToPosition
                    doRemoveItem(item.uid, 1) -- usun item
               else
                    return FALSE
               end

Kiedy: if config.teleportToTemple == 1 then nie zostanie spe?niony to odnosi do else, lecz on jest bez warunk?w wi?c napewno b?dzie spe?niony, wi?c po co jest jeszcze: else return FALSE ??

Mog? si? myli? ale raczej skrypt d??y tylko do else kt?re mo?e spe?ni?, a gdy to ju? zrobi to warunek si? ko?czy, wi?c ten ostatni else nigdy nie zostanie spe?niony bo poprzedzi go 2, chyba ?e w 2 else dasz warunek (wtedy b?dzie elseif ...)


EDIT: Jeszcze zauwa?y?em o 1 end za du?o. Tak jakby brakowa?o warunku, ju? go zaznaczam, jest na samym dole. Najwidoczniej przeoczy?e? reszt? po if'ie jak usuwa?e? 1 warunek (else i end) ;PP
 
Ostatnia edycja:
Status
Zamknięty.
Do góry