Asummonster
-
Публикации
420 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Сообщения, опубликованные пользователем Asummonster
-
-
Зед, ну что? Дали тебе прогу или нет? У Монтсрика, судя по описанию его, блютуз-программка вроде позволяет тебе решить твои задачи.
У него там консольно вроде можно сендить файл.
П.С. Недавно, кстати, наткнулся на канал интересный. Сделать бы что-то толковое на ОС, с определенным диапазоном или на бродкасте первый пинг, а соединение уже свое там какое-то, но с удобным интерфейсом и прочее.
Типа вот такого - смотреть.
Интересный канал, кстати у паренька. Толковый парнишка, грамотный. И оболочка у него графическая, и винтовка, сделана на КБ и редстончике, а мы не можем до сих пор на целом ОС пушку несчастную сделать и тир. Опять заглохло там все с тиром.
Даже, казалось бы, банальный замок на дверь, но насколько удобно все в один клик делается у него, и конфиги, и инсталлер, и сама реализация программы.
Этого паренька я уже 2 года смотрю,они ещё тогда механизмы на редстоуне делали классные
-
2
-
-
Это подстава!

-
Ну слава яйцам. Сегодня протестирую.

Пока сам немного программки все свои заканчиваю оформлять и с новой сборкой игрался.
Серега Кибер уже предлагает тебя под реабилитацию запускать, но я предложил только после должного оформления программки "Баночка опыта" и полного дебажинга, иначе она бы так и валялась с кучей багулек. А так сразу будет новая фича на ИТ. Я уже и компунтер там поставил специально для нее=)
Мне уже "шпионы" доложили о компуктере

-
Всё, багфикснул.
--ПОДКЛЮЧЕНИЕ КОМПОНЕНТОВ component=require("component") radar=component.openperipheral_sensor cb=component.command_block gpu=component.gpu event=require("event") term=require("term") unicode=require("unicode") computer=require("computer") keys=require("keyboard").keys --НАСТРОЙКИ background=0x000000 foreground=0x00ff00 --ФУНКЦИИ function getUserXP_local(login) ta=radar.getPlayerByName(LOGIN).all().player.experience return ta.level, ta.levelProgress, ta.nextLevelXp end function c(command) cb.setCommand(command) cb.executeCommand() end --[[ 17*Level --(at levels 0-15) 1.5*Level^2 - 29.5*Level + 360 --(at levels 16-30) 3.5*Level^2 - 151.5*Level + 2220 --(at level 31+)]]-- function xpInLevelF(level) if level>=31 then return 3.5*level^2-151.5*level+2220 elseif level>=16 and level<=30 then return 1.5*level^2 - 29.5*level + 360 elseif level<=15 then return 17*level end end function xpInLevel(level) if level==1 then return 17 end xpbig=xpInLevelF(level) xpmin=xpInLevelF(level-1) return xpbig-xpmin end function xpInUser(login) return xpInLevelF(getUserXP_local(login)) end function otjatLevel(login, level) levelInUser=getUserXP_local(login) if levelInUser-level<0 then return false, "Не хватает опыта!" end maxXpInUser=xpInUser(login) minXpInUser=xpInLevelF(levelInUser-level) selected=maxXpInUser-minXpInUser c("xp -"..selected.." "..login) return selected end function otjatExperience(login, exp) inUser=xpInUser(login) if inUser-exp<0 then return false, "Не хватает опыта!" end c("xp -"..exp.." "..login) return exp end function giveExperience(login, exp) c("xp "..exp.." "..login) end function giveLevel(login, exp) level=getUserXP_local(login) otjatExperience(login, xpInUser(login)) giveExperience(login, xpInLevelF(level)+xpInLevelF(exp)) end function setCenterText(y, text) len=unicode.len(text) x=(80/2)-(len/2) gpu.set(x, y, text) end function removeUsers() users={computer.users()} for i=1, #users do computer.removeUser(users[i]) end end function getUserXP_db(login) xp=nil file=io.open(login) if file then xp=file:read("*all") file:close() end if xp=="" then xp=0 elseif xp==nil then xp=0 end return xp end function clear22() tst="" for i=1, 80 do tst=tst.." " end gpu.setBackground(0x000000) setCenterText(22, tst) end function initEnetring() if selectedTab==1 then setCenterText(22, "Весь ваш опыт снят и добавлен в банк!") for i=1, 3 do otjatiyLevel=otjatExperience(LOGIN, xpInLevelF(getUserXP_local(LOGIN))) inDB=getUserXP_db(LOGIN) writeTo(LOGIN, otjatiyLevel+inDB) end elseif selectedTab==2 then setCenterText(22, "Весь ваш опыт из банка переведён вам!") levelCIB=tonumber(getUserXP_db(LOGIN)) giveExperience(LOGIN, levelCIB) writeTo(LOGIN, 0) elseif selectedTab==3 then gpu.setBackground(0x000000) gpu.setForeground(0xffffff) setCenterText(22, "Снятие части уровней БАНК==>ИГРОК! Ввод в единицах опыта. ") inputForGive=tonumber(read(23)) setCenterText(23, " ") xpInDB=tonumber(getUserXP_db(LOGIN)) if inputForGive>xpInDB then setCenterText(24, "Недостаточно опыта в банке!") os.sleep(2) setCenterText(24, " ") return false end giveExperience(LOGIN, inputForGive) nowInDB=xpInDB-inputForGive writeTo(LOGIN, tostring(nowInDB)) elseif selectedTab==4 then gpu.setBackground(0x000000) gpu.setForeground(0xffffff) setCenterText(22, "Снятие части уровней ИГРОК==>БАНК! Ввод в уровнях. ") inputForGive=tonumber(read(23)) setCenterText(23, " ") xpInDB=tonumber(getUserXP_db(_G.LOGIN)) levelInUserNow=getUserXP_local(_G.LOGIN) if levelInUserNow<inputForGive then setCenterText(24, "Недостаточно уровней!") os.sleep(2) setCenterText(24, " ") return false else inputForGive=levelInUserNow-inputForGive end xpInUserNow=xpInLevelF(levelInUserNow) xpToBank=xpInLevelF(levelInUserNow-inputForGive) otjatExperience(LOGIN, xpToBank) writeTo(LOGIN, xpInDB+xpToBank) end event.timer(5, clear22) drawINFO() end function reload(_, _, x, y) if x==80 and y==1 then drawGUI() end end event.listen("touch", reload) function printCurrentlySelected() msg="Выбрано: "..tostring(tofrom) ts="" for i=1, unicode.len(msg) do ts=ts.." " end gpu.set(1, 1, ts) gpu.set(1, 1, msg) for i=2, tofrom+1 do gpu.set(i, 13, "█") end end function pcst() gpu.setBackground(0xff0000) if selectedTab==1 then setCenterText(14, "Добавить все уровни в банк") elseif selectedTab==2 then setCenterText(15, "Снять весь опыт с банка") elseif selectedTab==3 then setCenterText(16, "Снять часть опыта с банка") elseif selectedTab==4 then setCenterText(17, "Добавить часть уровней в банк") end gpu.setForeground(0x000000) end function pcst2(selectedTab) gpu.setBackground(0x00ff00) if selectedTab==1 then setCenterText(14, "Добавить все уровни в банк") elseif selectedTab==2 then setCenterText(15, "Снять весь опыт с банка") elseif selectedTab==3 then setCenterText(16, "Снять часть опыта с банка") elseif selectedTab==4 then setCenterText(17, "Добавить часть уровней в банк") end gpu.setForeground(0x000000) end function writeTo(login, xp) file=io.open(login, "w") file:write(xp) file:close() end function clearINFO() for y=10, 12 do for x=1, 80 do gpu.set(x, y, " ") end end end function printTabes() noExit=true for i=1, 4 do pcst2(i) end tofrom=1 selectedTab=1 gpu.set(1, 13, "|") gpu.set(80, 13, "|") setCenterText(16, "Снять часть опыта с банка") setCenterText(15, "Снять весь опыт с банка") setCenterText(17, "Добавить часть уровней в банк") printCurrentlySelected() gpu.setBackground(0xff0000) setCenterText(14, "Добавить все уровни в банк") gpu.setForeground(0x000000) while noExit do pcst() printCurrentlySelected() _, _, _, key = event.pull("key_down") key=keys[key] if key=="up" and selectedTab~=1 then pcst2(selectedTab) selectedTab=selectedTab-1 elseif key=="down" and selectedTab~=4 then pcst2(selectedTab) selectedTab=selectedTab+1 elseif key=="enter" then initEnetring() elseif key=="f5" then reDrawGUI() end end end function drawINFO() gpu.setBackground(0x000000) gpu.setForeground(0x00ff00) clearINFO() setCenterText(10, "Игрок "..LOGIN.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(LOGIN)) setCenterText(12, "Опыт в Банке: "..tostring(getUserXP_db(LOGIN))) gpu.setForeground(0x000000) end function reDrawGUI() gpu.setBackground(background) gpu.setForeground(foreground) gpu.setResolution(80, 25) gpu.fill(1, 1, 80, 25, " ") gpu.set(80, 1, "x") setCenterText(1, "Банк Опыта") setCenterText(2, line1) setCenterText(3, line2) setCenterText(4, line3) setCenterText(5, line4) setCenterText(6, line5) setCenterText(7, line6) setCenterText(8, line7) setCenterText(9, line8) setCenterText(10, "Игрок "..login.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(login)) setCenterText(12, "Уровень в Банке: "..tostring(getUserXP_db(login))) printTabes() end function read(y) repeat term.setCursor(38, y) setCenterText(y, " ") variableValue=io.read() until tonumber(variableValue) return variableValue end line1=[[_________ _______ _______ _ ]] line2=[[\__ __/( ___ )|\ /|( ____ \|\ /|( )]] line3=[[ ) ( | ( ) || ) ( || ( \/| ) ( || |]] line4=[[ | | | | | || | | || | | (___) || |]] line5=[[ | | | | | || | | || | | ___ || |]] line6=[[ | | | | | || | | || | | ( ) |(_)]] line7=[[ | | | (___) || (___) || (____/\| ) ( | _ ]] line8=[[ )_( (_______)(_______)(_______/|/ \|(_)]] function drawGUI() gpu.setBackground(background) gpu.setForeground(foreground) gpu.setResolution(80, 25) gpu.fill(1, 1, 80, 25, " ") gpu.set(80, 1, "x") setCenterText(1, "Банк Опыта") setCenterText(2, line1) setCenterText(3, line2) setCenterText(4, line3) setCenterText(5, line4) setCenterText(6, line5) setCenterText(7, line6) setCenterText(8, line7) setCenterText(9, line8) _, _, _, _, _, login = event.pull("touch") _G.LOGIN=login setCenterText(10, "Игрок "..login.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(login)) setCenterText(12, "Уровень в Банке: "..tostring(getUserXP_db(login))) levelNow=getUserXP_local(LOGIN) c("xp -"..tostring(levelNow+1).."L "..LOGIN) c("xp "..levelNow.."L "..LOGIN) printTabes() end function getExperienceSphereCL(login) endВизуальные баги тоже фиксанул
-
Ха-ха, правда! Я с 10 лвл снял 2 уровня, потом 3, перевёл всё себе, и Аллилуйя! У меня 17 лвл с половинкой...
Да, я понял где ошибка...
-
@Asummonster, готова в первом приближении "лёгкая" библиотека гуи. Можем потестировать
С радостью, но её взять-то где?

-
Лично я ничего не понял.
Машинки! Движущиеся коллизии
-
Поставил бы лайк + лучший ответ 
-
Там стиль можно не прописывать и там тоже есть gui:createButton
Да, а ещё надо мульён файлов скачать. Нет уж, спасибо. Вот когда крутой ужмёт всё в один файл, буду юзать
-
Ну, а тут наши полномочия всё
-
Только что потестировал. С опытом проблем нет,всё честно. Тут в другом дело, Алекс. Если у тебя не полный уровень, то сферы в тебе остаются. Он видит,сколько у тебя уровня, снимает его с тебя. Однако, если у тебя 80 лвл и половина 81 лвл, то если ты снимешь всё, у тебя половина 81 превратится в 15 уровней простых. И, когда ты снимаешь с банка он видит,что у тебя 15 уровней, и к ним прибавляет опыт. И ещё: Я заметил баг,что если уровень >120, его не всегда полностью снимает. Его просто не видит радар...
-
computer.pushSignal
-
2
-
-
Хм,странно...Вот,честно,меня никогда не обманывало...
-
Ты ее тестировал?
Часть опыта банк просто себе присваивает при снятии, а потом забирании Если снять какую-то часть своего опыта в банк, а потом весь забрать, то остаешься в попе. Банк конкретно не додает опыта. Ищи ошибку в логике.И сделано все как просили с точностью наИборот=) Я ж тебе говорил, не связывайся с уровнями. Все должно быть в ед. Много багулек и артефактов графических (остатки букв, цвета) остается в диалогах тоже пока.
'Сохранку' еще не смотрел, как ты ее сделал, но ее в любом случае мы подключим к SQL ячейку с опытом каждому игроку.
Авторазлогин есть?
Авторазлогина нет, а смысл? Ты же без игрока опыт не снимешь, не переведёшь. Но сделать это легко, по идее. Странно.Меня банк ни разу обманывал...С уровнями не связывался, в банке хранится всё в единицах опыта. Или ты хочешь с игрока тоже в единицах снимать? По моему, не удобно будет. К примеру, хочешь снять 5 уровней, и считай себе
Скинь артефакты, если не сложно. Я не видел(тестил мало, ~20 минут) -
Тьфу. Допиши в конце
while true do drawGUI() end

-
Что все? Это уже релиз? Работает?
Работает
Вот как выглядит установка: 



-
Ладно.
Запись в файл: 201 строка
Чтение: 84 строка
--ПОДКЛЮЧЕНИЕ КОМПОНЕНТОВ component=require("component") radar=component.openperipheral_sensor cb=component.command_block gpu=component.gpu event=require("event") term=require("term") unicode=require("unicode") computer=require("computer") keys=require("keyboard").keys --НАСТРОЙКИ background=0x000000 foreground=0x00ff00 --ФУНКЦИИ function getUserXP_local(login) ta=radar.getPlayerByName(LOGIN).all().player.experience return ta.level, ta.levelProgress, ta.nextLevelXp end function c(command) cb.setCommand(command) cb.executeCommand() end --[[ 17*Level --(at levels 0-15) 1.5*Level^2 - 29.5*Level + 360 --(at levels 16-30) 3.5*Level^2 - 151.5*Level + 2220 --(at level 31+)]]-- function xpInLevelF(level) if level>=31 then return 3.5*level^2-151.5*level+2220 elseif level>=16 and level<=30 then return 1.5*level^2 - 29.5*level + 360 elseif level<=15 then return 17*level end end function xpInLevel(level) if level==1 then return 17 end xpbig=xpInLevelF(level) xpmin=xpInLevelF(level-1) return xpbig-xpmin end function xpInUser(login) return xpInLevelF(getUserXP_local(login)) end function otjatLevel(login, level) levelInUser=getUserXP_local(login) if levelInUser-level<0 then return false, "Не хватает опыта!" end maxXpInUser=xpInUser(login) minXpInUser=xpInLevelF(levelInUser-level) selected=maxXpInUser-minXpInUser c("xp -"..selected.." "..login) return selected end function otjatExperience(login, exp) inUser=xpInUser(login) if inUser-exp<0 then return false, "Не хватает опыта!" end c("xp -"..exp.." "..login) return exp end function giveExperience(login, exp) c("xp "..exp.." "..login) end function giveLevel(login, exp) level=getUserXP_local(login) otjatExperience(login, xpInUser(login)) giveExperience(login, xpInLevelF(level)+xpInLevelF(exp)) end function setCenterText(y, text) len=unicode.len(text) x=(80/2)-(len/2) gpu.set(x, y, text) end function removeUsers() users={computer.users()} for i=1, #users do computer.removeUser(users[i]) end end function getUserXP_db(login) xp=nil file=io.open(login) if file then xp=file:read("*all") file:close() end if xp=="" then xp=0 elseif xp==nil then xp=0 end return xp end function clear22() tst="" for i=1, 80 do tst=tst.." " end gpu.setBackground(0x000000) setCenterText(22, tst) end function initEnetring() if selectedTab==1 then setCenterText(22, "Весь ваш опыт снят и добавлен в банк!") for i=1, 3 do otjatiyLevel=otjatExperience(LOGIN, xpInLevelF(getUserXP_local(LOGIN))) inDB=getUserXP_db(LOGIN) writeTo(LOGIN, otjatiyLevel+inDB) end elseif selectedTab==2 then setCenterText(22, "Весь ваш опыт из банка переведён вам!") levelCIB=tonumber(getUserXP_db(LOGIN)) giveExperience(LOGIN, levelCIB) writeTo(LOGIN, 0) elseif selectedTab==3 then gpu.setBackground(0x000000) gpu.setForeground(0xffffff) setCenterText(22, "Снятие части уровней БАНК==>ИГРОК! Ввод в единицах опыта. ") inputForGive=tonumber(read(23)) setCenterText(23, " ") xpInDB=tonumber(getUserXP_db(LOGIN)) if inputForGive>xpInDB then setCenterText(24, "Недостаточно опыта в банке!") os.sleep(2) setCenterText(24, " ") return false end giveExperience(LOGIN, inputForGive) nowInDB=xpInDB-inputForGive writeTo(LOGIN, tostring(nowInDB)) elseif selectedTab==4 then gpu.setBackground(0x000000) gpu.setForeground(0xffffff) setCenterText(22, "Снятие части уровней ИГРОК==>БАНК! Ввод в уровнях. ") inputForGive=tonumber(read(23)) setCenterText(23, " ") xpInDB=tonumber(getUserXP_db(_G.LOGIN)) levelInUserNow=getUserXP_local(_G.LOGIN) if levelInUserNow<inputForGive then setCenterText(24, "Недостаточно уровней!") os.sleep(2) setCenterText(24, " ") return false else inputForGive=levelInUserNow-inputForGive end otjatExperience(LOGIN, xpInLevelF(levelInUserNow)) inputForGive=xpInLevelF(inputForGive) giveExperience(LOGIN, inputForGive) writeTo(LOGIN, xpInDB+inputForGive) end event.timer(5, clear22) drawINFO() end function reload(_, _, x, y) if x==80 and y==1 then drawGUI() end end event.listen("touch", reload) function printCurrentlySelected() msg="Выбрано: "..tostring(tofrom) ts="" for i=1, unicode.len(msg) do ts=ts.." " end gpu.set(1, 1, ts) gpu.set(1, 1, msg) for i=2, tofrom+1 do gpu.set(i, 13, "█") end end function pcst() gpu.setBackground(0xff0000) if selectedTab==1 then setCenterText(14, "Добавить все уровни в банк") elseif selectedTab==2 then setCenterText(15, "Снять весь опыт с банка") elseif selectedTab==3 then setCenterText(16, "Снять часть опыта с банка") elseif selectedTab==4 then setCenterText(17, "Добавить часть уровней в банк") end gpu.setForeground(0x000000) end function pcst2(selectedTab) gpu.setBackground(0x00ff00) if selectedTab==1 then setCenterText(14, "Добавить все уровни в банк") elseif selectedTab==2 then setCenterText(15, "Снять весь опыт с банка") elseif selectedTab==3 then setCenterText(16, "Снять часть опыта с банка") elseif selectedTab==4 then setCenterText(17, "Добавить часть уровней в банк") end gpu.setForeground(0x000000) end function writeTo(login, xp) file=io.open(login, "w") file:write(xp) file:close() end function clearINFO() for y=10, 12 do for x=1, 80 do gpu.set(x, y, " ") end end end function printTabes() noExit=true for i=1, 4 do pcst2(i) end tofrom=1 selectedTab=1 gpu.set(1, 13, "|") gpu.set(80, 13, "|") setCenterText(16, "Снять часть опыта с банка") setCenterText(15, "Снять весь опыт с банка") setCenterText(17, "Добавить часть уровней в банк") printCurrentlySelected() gpu.setBackground(0xff0000) setCenterText(14, "Добавить все уровни в банк") gpu.setForeground(0x000000) while noExit do pcst() printCurrentlySelected() _, _, _, key = event.pull("key_down") key=keys[key] if key=="up" and selectedTab~=1 then pcst2(selectedTab) selectedTab=selectedTab-1 elseif key=="down" and selectedTab~=4 then pcst2(selectedTab) selectedTab=selectedTab+1 elseif key=="enter" then initEnetring() elseif key=="f5" then reDrawGUI() end end end function drawINFO() gpu.setBackground(0x000000) gpu.setForeground(0x00ff00) clearINFO() setCenterText(10, "Игрок "..LOGIN.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(LOGIN)) setCenterText(12, "Опыт в Банке: "..tostring(getUserXP_db(LOGIN))) gpu.setForeground(0x000000) end function reDrawGUI() gpu.setBackground(background) gpu.setForeground(foreground) gpu.setResolution(80, 25) gpu.fill(1, 1, 80, 25, " ") gpu.set(80, 1, "x") setCenterText(1, "Банк Опыта") setCenterText(2, line1) setCenterText(3, line2) setCenterText(4, line3) setCenterText(5, line4) setCenterText(6, line5) setCenterText(7, line6) setCenterText(8, line7) setCenterText(9, line8) setCenterText(10, "Игрок "..login.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(login)) setCenterText(12, "Уровень в Банке: "..tostring(getUserXP_db(login))) printTabes() end function read(y) repeat term.setCursor(38, y) setCenterText(y, " ") variableValue=io.read() until tonumber(variableValue) return variableValue end line1=[[_________ _______ _______ _ ]] line2=[[\__ __/( ___ )|\ /|( ____ \|\ /|( )]] line3=[[ ) ( | ( ) || ) ( || ( \/| ) ( || |]] line4=[[ | | | | | || | | || | | (___) || |]] line5=[[ | | | | | || | | || | | ___ || |]] line6=[[ | | | | | || | | || | | ( ) |(_)]] line7=[[ | | | (___) || (___) || (____/\| ) ( | _ ]] line8=[[ )_( (_______)(_______)(_______/|/ \|(_)]] function drawGUI() gpu.setBackground(background) gpu.setForeground(foreground) gpu.setResolution(80, 25) gpu.fill(1, 1, 80, 25, " ") gpu.set(80, 1, "x") setCenterText(1, "Банк Опыта") setCenterText(2, line1) setCenterText(3, line2) setCenterText(4, line3) setCenterText(5, line4) setCenterText(6, line5) setCenterText(7, line6) setCenterText(8, line7) setCenterText(9, line8) _, _, _, _, _, login = event.pull("touch") _G.LOGIN=login setCenterText(10, "Игрок "..login.." залогинился.") setCenterText(11, 'Уровень "на руках": '..getUserXP_local(login)) setCenterText(12, "Уровень в Банке: "..tostring(getUserXP_db(login))) levelNow=getUserXP_local(LOGIN) c("xp -"..tostring(levelNow+1).."L "..LOGIN) c("xp "..levelNow.."L "..LOGIN) printTabes() end function getExperienceSphereCL(login) end
Вроде всё
Для выхода - справа, сверху есть крестик
-
Да, вручную. Просто, как говроит Фингер, целится мышкой во всякие кнопочки не очень удобно.Навигация по режимам у меня стрелочками.
-
У меня нет акка на с9. Просто сделай программку на луа. И мы ее запихаем на ИТ. И игроки смогут сливать опыт в банк. Вот и все.
ОК. Только у меня ввод данных о снятии опыта и добавлении на io.read(). По моему, удобней будет сразу написать 356, чем тыкать на кнопочки

-
Понятно.
Вот, держи набросок для твоей "банки" опыта:
1. Создай любую базу для конкретного юзера со всеми правами.
2. В ней создай таблицу. Не забудь указать авто-инкремент для поля id.


Вот скриптик:
<?php // Пример запроса на добавление экспы или получение ее текущего значения // http://localhost/expupd.php?&auth=f92b3037ee&nick=Alex&action=add&value=10 // http://localhost/expupd.php?&auth=f92b3037ee&nick=Bob&action=add&value=-570 // http://localhost/expupd.php?&auth=f92b3037ee&nick=Bob&action=get // Получаем переменные в GET запросе: $username = htmlspecialchars($_GET['nick']); $action = htmlspecialchars($_GET['action']); $value = htmlspecialchars($_GET['value']); $auth = htmlspecialchars($_GET['auth']); // Проверим пароль доступа к скрипту и и некоторые параметры запроса: $codeaccess = 'f92b3037ee'; if ($auth != $codeaccess) die ("Wrong auth"); // В имени пользователя могут быть только цифры, буквы и знак нижнего подчеркивания if (!preg_match("/^[a-zA-Z0-9_]+$/", $username)) die("Bad login"); if ($action != 'set' and $action != 'get' and $action != 'add') die("Wrong action"); // Параметры подключения к базе: $host = 'localhost'; $user = 'alexcc'; // имя пользователя базы $pass = 'SFJHwhP6RrSaz'; //пароль к базе $namebase = 'prog'; // имя базы $table = 'test'; // имя таблицы // Подключение к базе $connect = mysql_connect($host, $user, $pass) or die('error connect'); mysql_select_db($namebase, $connect); $sql = mysql_query("SELECT exp FROM $table WHERE nick = '$username'") or die (mysql_error()); $count = mysql_num_rows($sql); // Если такого пользователя нет еще в базе, создадим его, и присвоем значение опыта 0 if ($count == 0) { mysql_query("INSERT INTO $table (`nick`, `exp`, `lastaccess`) VALUES ('$username', '0', NOW())") or die (mysql_error()); } // Вернем значение опыта if($action == 'get') { $sql = mysql_query("SELECT exp FROM $table WHERE `nick`='$username'") or die (mysql_error()); $data = mysql_fetch_array($sql); echo $data['exp']; } // Добавим или отнимем (если значение отрицательное) опыт if($action == 'add') { mysql_query("UPDATE $table SET exp = exp + '$value' WHERE `nick`='$username'") or die (mysql_error()); echo 'OK'; } // Чит фича (установка конкретного значения опыта) if($action == 'set') { mysql_query("UPDATE $table SET exp ='$value' WHERE `nick`='$username'") or die (mysql_error()); echo 'OK'; } // Закроем соединение с базой mysql_close($connect); ?>Должно выйти так:

Функция для твоей проги "Баночка опыта":
KEY = 'f92b3037ee' function get(url) local request, reason = inet.request(url) if not request then return '' end local text = '' while true do local data, reason = request.read() if not data then request.close() break elseif #data > 0 then text = text..data end end return text end function addBankExp(nick, amount) return get('http://mysite.ru/expupd.php?auth='..KEY..'&nick='..nick..'&action=add&value='..amount) end ...Без рабочей банки опыта тебя разбанить нет никакой возможности.

Неее. 1 день знаю php, с sql даже пробовать не буду
У меня сейчас всё на file_get_contents и на file_put_contents
Вот моя "рабочая станция":D -
Нео! Ты лучше бы чем руки скелету из жопы рисовать полдня, дал лучше бы человеку код или помог как-то ему.
П.С. Держи, Монстрик, свою кодировочную фиговину:
function urlencode(str) if (str) then str = string.gsub (str, "\n", "\r\n") str = string.gsub (str, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) str = string.gsub (str, " ", "+") end return str endСпасибо!
-
Эх, жалко мне тебя... Столько времени,наверное, тратишь на это...А ведь на сервере люди либо знают АЕ, либо просто им не интересуются. А если не знают, то легче будет видосик на ютубе включить, чем 30к символов и 204 строки прочитать(посчитал
). Лучше ОК учи, будет и интересно,и поощрение от администрации, и уважение от других игроков данного проекта. -
Ну, так-то дописал
Теперь пишу веб-часть. Благо, вчера подружился с php:) -
Да вы упоролись...
Как насчет urlencode() ?
В lua?


Программа "Передача файлов"
в Выполненные заказы
Опубликовано:
А зачем оно сериализирует? Зачем в сообщении с куском кода название файла? + обрезалка по maxPacketSize не спасёт, потому что serialization добавляет кучу "/".