• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 1.X+ mount on login

antonio664

Member
Joined
Jan 9, 2013
Messages
129
Reaction score
5
is it possible to force an assembly automatically at login?
normally when you log out, a Dismount happens

tfs 1.3
 
Solution
It is a function of type integer, therefore it must return an integer

C++:
registerMethod("Player", "toggleMount", LuaScriptInterface::luaPlayerToggleMount);

C++:
int LuaScriptInterface::luaPlayerToggleMount(lua_State* L)
{
    // player:toggleMount(bool)
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        pushBoolean(L, player->toggleMount(getBoolean(L, 2, true)));
    } else {
        lua_pushnil(L);
    }
    return 1;
}

luascript.h
C++:
static int luaPlayerToggleMount(lua_State* L);
I know in Player Class you have toggleMount function, but i guess it can't be called in Lua side, im not sure.
You can make a C++ function to be able to call from Lua side and call it in onLogin or you call the player->toggleMount(true) when the server perform the login.
 
is it possible to force an assembly automatically at login?
normally when you log out, a Dismount happens

tfs 1.3
C++:
    registerMethod("Player", "LoginMount", LuaScriptInterface::luaPlayerLoginMount);
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }

    player->toggleMount(mount);
}
C++:
        static int luaPlayerLoginMount(lua_State* L);

Under line

Lua:
function onLogin(player)
Add
Lua:
      player:LoginMount()
 
C++:
    registerMethod("Player", "LoginMount", LuaScriptInterface::luaPlayerLoginMount);
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }

    player->toggleMount(mount);
}
C++:
        static int luaPlayerLoginMount(lua_State* L);

Under line

Lua:
function onLogin(player)
Add
Lua:
      player:LoginMount()
The idea is good, but the name is ugly, better player:toggleMount() the same name is fine, your name is very specific and does not comply with Camel Case and in this part it should be: 1609252557130.png player->toggleMount(getBoolean(L, 2));
 
C++:
    registerMethod("Player", "LoginMount", LuaScriptInterface::luaPlayerLoginMount);
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }

    player->toggleMount(mount);
}
C++:
        static int luaPlayerLoginMount(lua_State* L);

Under line

Lua:
function onLogin(player)
Add
Lua:
      player:LoginMount()


C++:
user@DESKTOP-ACDPUQ5:~/Sourcers_12-07-2020$ ./recompile.sh
Directory 'build' already exists, moving to it
Clean build directory
Configuring
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found CryptoPP: /usr/include (found version "5.6.4")
-- Found PugiXML: /usr/include
-- MySQL Include dir: /usr/include/mysql  library dir: /usr/lib/x86_64-linux-gnu
-- MySQL client libraries: /usr/lib/x86_64-linux-gnu/libmysqlclient.so;-ldl
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   system
--   filesystem
--   iostreams
--   date_time
--   regex
-- Found LuaJIT: /usr/lib/x86_64-linux-gnu/libluajit-5.1.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "2.1.0-beta3")
-- Git Found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/Sourcers_12-07-2020/build
Scanning dependencies of target check_git
Scanning dependencies of target otbr_lib
[  1%] Checking the git repository for changes...
[  1%] Built target check_git
[  2%] Building CXX object CMakeFiles/otbr_lib.dir/src/otpch.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/ban.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/account.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/actions.cpp.o
[  7%] Building CXX object CMakeFiles/otbr_lib.dir/src/baseevents.cpp.o
[  8%] Building CXX object CMakeFiles/otbr_lib.dir/src/bed.cpp.o
[  9%] Building CXX object CMakeFiles/otbr_lib.dir/src/combat.cpp.o
[ 10%] Building CXX object CMakeFiles/otbr_lib.dir/src/chat.cpp.o
[ 11%] Building CXX object CMakeFiles/otbr_lib.dir/src/condition.cpp.o
[ 12%] Building CXX object CMakeFiles/otbr_lib.dir/src/configmanager.cpp.o
[ 14%] Building CXX object CMakeFiles/otbr_lib.dir/src/connection.cpp.o
[ 15%] Building CXX object CMakeFiles/otbr_lib.dir/src/container.cpp.o
[ 16%] Building CXX object CMakeFiles/otbr_lib.dir/src/creature.cpp.o
[ 17%] Building CXX object CMakeFiles/otbr_lib.dir/src/creatureevent.cpp.o
[ 18%] Building CXX object CMakeFiles/otbr_lib.dir/src/cylinder.cpp.o
[ 20%] Building CXX object CMakeFiles/otbr_lib.dir/src/database.cpp.o
[ 21%] Building CXX object CMakeFiles/otbr_lib.dir/src/databasemanager.cpp.o
[ 22%] Building CXX object CMakeFiles/otbr_lib.dir/src/databasetasks.cpp.o
[ 23%] Building CXX object CMakeFiles/otbr_lib.dir/src/depotchest.cpp.o
[ 24%] Building CXX object CMakeFiles/otbr_lib.dir/src/depotlocker.cpp.o
[ 25%] Building CXX object CMakeFiles/otbr_lib.dir/src/events.cpp.o
[ 27%] Building CXX object CMakeFiles/otbr_lib.dir/src/fileloader.cpp.o
[ 28%] Building CXX object CMakeFiles/otbr_lib.dir/src/game.cpp.o
[ 29%] Building CXX object CMakeFiles/otbr_lib.dir/src/gamestore.cpp.o
[ 30%] Building CXX object CMakeFiles/otbr_lib.dir/src/globalevent.cpp.o
[ 31%] Building CXX object CMakeFiles/otbr_lib.dir/src/guild.cpp.o
[ 32%] Building CXX object CMakeFiles/otbr_lib.dir/src/groups.cpp.o
[ 34%] Building CXX object CMakeFiles/otbr_lib.dir/src/house.cpp.o
[ 35%] Building CXX object CMakeFiles/otbr_lib.dir/src/housetile.cpp.o
[ 36%] Building CXX object CMakeFiles/otbr_lib.dir/src/inbox.cpp.o
[ 37%] Building CXX object CMakeFiles/otbr_lib.dir/src/ioguild.cpp.o
[ 38%] Building CXX object CMakeFiles/otbr_lib.dir/src/iologindata.cpp.o
[ 40%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomap.cpp.o
[ 41%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomapserialize.cpp.o
[ 42%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomarket.cpp.o
[ 43%] Building CXX object CMakeFiles/otbr_lib.dir/src/item.cpp.o
[ 44%] Building CXX object CMakeFiles/otbr_lib.dir/src/items.cpp.o
[ 45%] Building CXX object CMakeFiles/otbr_lib.dir/src/imbuements.cpp.o
[ 47%] Building CXX object CMakeFiles/otbr_lib.dir/src/luascript.cpp.o
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:25: error: ‘mount’ was not declared in this scope
     player->toggleMount(mount);
                         ^~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:25: note: suggested alternative: ‘Mount’
     player->toggleMount(mount);
                         ^~~~~
                         Mount
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Post automatically merged:


------------------------------------------------------------------------------------------------------------------------------
The idea is good, but the name is ugly, better player:toggleMount() the same name is fine, your name is very specific and does not comply with Camel Case and in this part it should be: View attachment 53116 player->toggleMount(getBoolean(L, 2));


C++:
[ 37%] Building CXX object CMakeFiles/otbr_lib.dir/src/ioguild.cpp.o
[ 38%] Building CXX object CMakeFiles/otbr_lib.dir/src/iologindata.cpp.o
[ 40%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomap.cpp.o
[ 41%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomapserialize.cpp.o
[ 42%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomarket.cpp.o
[ 43%] Building CXX object CMakeFiles/otbr_lib.dir/src/item.cpp.o
[ 44%] Building CXX object CMakeFiles/otbr_lib.dir/src/items.cpp.o
[ 45%] Building CXX object CMakeFiles/otbr_lib.dir/src/imbuements.cpp.o
[ 47%] Building CXX object CMakeFiles/otbr_lib.dir/src/luascript.cpp.o
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
 
Last edited:
C++:
user@DESKTOP-ACDPUQ5:~/Sourcers_12-07-2020$ ./recompile.sh
Directory 'build' already exists, moving to it
Clean build directory
Configuring
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found CryptoPP: /usr/include (found version "5.6.4")
-- Found PugiXML: /usr/include
-- MySQL Include dir: /usr/include/mysql  library dir: /usr/lib/x86_64-linux-gnu
-- MySQL client libraries: /usr/lib/x86_64-linux-gnu/libmysqlclient.so;-ldl
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   system
--   filesystem
--   iostreams
--   date_time
--   regex
-- Found LuaJIT: /usr/lib/x86_64-linux-gnu/libluajit-5.1.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "2.1.0-beta3")
-- Git Found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/Sourcers_12-07-2020/build
Scanning dependencies of target check_git
Scanning dependencies of target otbr_lib
[  1%] Checking the git repository for changes...
[  1%] Built target check_git
[  2%] Building CXX object CMakeFiles/otbr_lib.dir/src/otpch.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/ban.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/account.cpp.o
[  5%] Building CXX object CMakeFiles/otbr_lib.dir/src/actions.cpp.o
[  7%] Building CXX object CMakeFiles/otbr_lib.dir/src/baseevents.cpp.o
[  8%] Building CXX object CMakeFiles/otbr_lib.dir/src/bed.cpp.o
[  9%] Building CXX object CMakeFiles/otbr_lib.dir/src/combat.cpp.o
[ 10%] Building CXX object CMakeFiles/otbr_lib.dir/src/chat.cpp.o
[ 11%] Building CXX object CMakeFiles/otbr_lib.dir/src/condition.cpp.o
[ 12%] Building CXX object CMakeFiles/otbr_lib.dir/src/configmanager.cpp.o
[ 14%] Building CXX object CMakeFiles/otbr_lib.dir/src/connection.cpp.o
[ 15%] Building CXX object CMakeFiles/otbr_lib.dir/src/container.cpp.o
[ 16%] Building CXX object CMakeFiles/otbr_lib.dir/src/creature.cpp.o
[ 17%] Building CXX object CMakeFiles/otbr_lib.dir/src/creatureevent.cpp.o
[ 18%] Building CXX object CMakeFiles/otbr_lib.dir/src/cylinder.cpp.o
[ 20%] Building CXX object CMakeFiles/otbr_lib.dir/src/database.cpp.o
[ 21%] Building CXX object CMakeFiles/otbr_lib.dir/src/databasemanager.cpp.o
[ 22%] Building CXX object CMakeFiles/otbr_lib.dir/src/databasetasks.cpp.o
[ 23%] Building CXX object CMakeFiles/otbr_lib.dir/src/depotchest.cpp.o
[ 24%] Building CXX object CMakeFiles/otbr_lib.dir/src/depotlocker.cpp.o
[ 25%] Building CXX object CMakeFiles/otbr_lib.dir/src/events.cpp.o
[ 27%] Building CXX object CMakeFiles/otbr_lib.dir/src/fileloader.cpp.o
[ 28%] Building CXX object CMakeFiles/otbr_lib.dir/src/game.cpp.o
[ 29%] Building CXX object CMakeFiles/otbr_lib.dir/src/gamestore.cpp.o
[ 30%] Building CXX object CMakeFiles/otbr_lib.dir/src/globalevent.cpp.o
[ 31%] Building CXX object CMakeFiles/otbr_lib.dir/src/guild.cpp.o
[ 32%] Building CXX object CMakeFiles/otbr_lib.dir/src/groups.cpp.o
[ 34%] Building CXX object CMakeFiles/otbr_lib.dir/src/house.cpp.o
[ 35%] Building CXX object CMakeFiles/otbr_lib.dir/src/housetile.cpp.o
[ 36%] Building CXX object CMakeFiles/otbr_lib.dir/src/inbox.cpp.o
[ 37%] Building CXX object CMakeFiles/otbr_lib.dir/src/ioguild.cpp.o
[ 38%] Building CXX object CMakeFiles/otbr_lib.dir/src/iologindata.cpp.o
[ 40%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomap.cpp.o
[ 41%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomapserialize.cpp.o
[ 42%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomarket.cpp.o
[ 43%] Building CXX object CMakeFiles/otbr_lib.dir/src/item.cpp.o
[ 44%] Building CXX object CMakeFiles/otbr_lib.dir/src/items.cpp.o
[ 45%] Building CXX object CMakeFiles/otbr_lib.dir/src/imbuements.cpp.o
[ 47%] Building CXX object CMakeFiles/otbr_lib.dir/src/luascript.cpp.o
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:25: error: ‘mount’ was not declared in this scope
     player->toggleMount(mount);
                         ^~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:25: note: suggested alternative: ‘Mount’
     player->toggleMount(mount);
                         ^~~~~
                         Mount
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Post automatically merged:


------------------------------------------------------------------------------------------------------------------------------



C++:
[ 37%] Building CXX object CMakeFiles/otbr_lib.dir/src/ioguild.cpp.o
[ 38%] Building CXX object CMakeFiles/otbr_lib.dir/src/iologindata.cpp.o
[ 40%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomap.cpp.o
[ 41%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomapserialize.cpp.o
[ 42%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomarket.cpp.o
[ 43%] Building CXX object CMakeFiles/otbr_lib.dir/src/item.cpp.o
[ 44%] Building CXX object CMakeFiles/otbr_lib.dir/src/items.cpp.o
[ 45%] Building CXX object CMakeFiles/otbr_lib.dir/src/imbuements.cpp.o
[ 47%] Building CXX object CMakeFiles/otbr_lib.dir/src/luascript.cpp.o
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Give you full "luascript.cpp"
 
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }

    pushBoolean(L, player->toggleMount(mount));
}
Check this one
 
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }

    pushBoolean(L, player->toggleMount(mount));
}
Check this one

C++:
[ 32%] Building CXX object CMakeFiles/otbr_lib.dir/src/groups.cpp.o
[ 34%] Building CXX object CMakeFiles/otbr_lib.dir/src/house.cpp.o
[ 35%] Building CXX object CMakeFiles/otbr_lib.dir/src/housetile.cpp.o
[ 36%] Building CXX object CMakeFiles/otbr_lib.dir/src/inbox.cpp.o
[ 37%] Building CXX object CMakeFiles/otbr_lib.dir/src/ioguild.cpp.o
[ 38%] Building CXX object CMakeFiles/otbr_lib.dir/src/iologindata.cpp.o
[ 40%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomap.cpp.o
[ 41%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomapserialize.cpp.o
[ 42%] Building CXX object CMakeFiles/otbr_lib.dir/src/iomarket.cpp.o
[ 43%] Building CXX object CMakeFiles/otbr_lib.dir/src/item.cpp.o
[ 44%] Building CXX object CMakeFiles/otbr_lib.dir/src/items.cpp.o
[ 45%] Building CXX object CMakeFiles/otbr_lib.dir/src/imbuements.cpp.o
[ 47%] Building CXX object CMakeFiles/otbr_lib.dir/src/luascript.cpp.o
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:40: error: ‘mount’ was not declared in this scope
     pushBoolean(L, player->toggleMount(mount));
                                        ^~~~~
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3463:40: note: suggested alternative: ‘Mount’
     pushBoolean(L, player->toggleMount(mount));
                                        ^~~~~
                                        Mount
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
 
remember change mount for a boolean variable, in this case true or use getBoolean(L, 2);

C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }


    pushBoolean(L, player->toggleMount(true));
}


C++:
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
 
C++:
int LuaScriptInterface::luaPlayerLoginMount(lua_State* L)
{
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        return;
    }


    pushBoolean(L, player->toggleMount(true));
}


C++:
[ 48%] Building CXX object CMakeFiles/otbr_lib.dir/src/mailbox.cpp.o
[ 49%] Building CXX object CMakeFiles/otbr_lib.dir/src/map.cpp.o
[ 50%] Building CXX object CMakeFiles/otbr_lib.dir/src/modules.cpp.o
[ 51%] Building CXX object CMakeFiles/otbr_lib.dir/src/monster.cpp.o
[ 52%] Building CXX object CMakeFiles/otbr_lib.dir/src/monsters.cpp.o
[ 54%] Building CXX object CMakeFiles/otbr_lib.dir/src/mounts.cpp.o
/home/user/Sourcers_12-07-2020/src/luascript.cpp: In static member function ‘static int LuaScriptInterface::luaPlayerLoginMount(lua_State*)’:
/home/user/Sourcers_12-07-2020/src/luascript.cpp:3460:9: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
         return;
         ^~~~~~
[ 55%] Building CXX object CMakeFiles/otbr_lib.dir/src/movement.cpp.o
CMakeFiles/otbr_lib.dir/build.make:974: recipe for target 'CMakeFiles/otbr_lib.dir/src/luascript.cpp.o' failed
make[2]: *** [CMakeFiles/otbr_lib.dir/src/luascript.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otbr_lib.dir/all' failed
make[1]: *** [CMakeFiles/otbr_lib.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
It literally tells you what is the problem, jeez...
 
It is a function of type integer, therefore it must return an integer

C++:
registerMethod("Player", "toggleMount", LuaScriptInterface::luaPlayerToggleMount);

C++:
int LuaScriptInterface::luaPlayerToggleMount(lua_State* L)
{
    // player:toggleMount(bool)
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        pushBoolean(L, player->toggleMount(getBoolean(L, 2, true)));
    } else {
        lua_pushnil(L);
    }
    return 1;
}

luascript.h
C++:
static int luaPlayerToggleMount(lua_State* L);
 
Solution
It is a function of type integer, therefore it must return an integer

C++:
registerMethod("Player", "toggleMount", LuaScriptInterface::luaPlayerToggleMount);

C++:
int LuaScriptInterface::luaPlayerToggleMount(lua_State* L)
{
    // player:toggleMount(bool)
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        pushBoolean(L, player->toggleMount(getBoolean(L, 2, true)));
    } else {
        lua_pushnil(L);
    }
    return 1;
}

luascript.h
C++:
static int luaPlayerToggleMount(lua_State* L);

Just as complement:

The return 1; means 1 value as return.

---

In Lua, you can return more than 1 value as the function's return:

Lua:
function getTalkaction(id)
  return TALKACTIONS_WORD[id], TALKACTIONS_SEPARATOR[id] -- >> 2 values returned <<
end

-- You can use this like that:
local word, separator = getTalkaction(7)
print(word)
print(separator)

---

In C++ (but still through Lua), we could do the same:

C++:
lua_register(luaState, "getWorldLight", LuaScriptInterface::luaGetWorldLight);
int LuaScriptInterface::luaGetWorldLight(lua_State* L)
{
    //getWorldLight()
    LightInfo lightInfo = g_game.getWorldLightInfo();
    lua_pushnumber(L, lightInfo.level);
    lua_pushnumber(L, lightInfo.color);
    return 2; // >> 2 values returned <<
}

Lua:
-- You can use this like that:
local level, color = getWorldLight()
print(level)
print(color)

---

Generally, you never use more than 2 return values.
If you still need more than 2 values at once, you probably may return a table value, since you are returning too many values at a time.
 
It is a function of type integer, therefore it must return an integer

C++:
registerMethod("Player", "toggleMount", LuaScriptInterface::luaPlayerToggleMount);

C++:
int LuaScriptInterface::luaPlayerToggleMount(lua_State* L)
{
    // player:toggleMount(bool)
    Player* player = getUserdata<Player>(L, 1);
    if (player) {
        pushBoolean(L, player->toggleMount(getBoolean(L, 2, true)));
    } else {
        lua_pushnil(L);
    }
    return 1;
}

luascript.h
C++:
static int luaPlayerToggleMount(lua_State* L);


compiled correctly
but it does not work. No console errors = (

In login.lua i put

Lua:
Player:toggleMount()
 
Back
Top